0
<label class="control-label"> 
    Rental Charge: 
    <span class="required" ng-show="vm.rentalInfo.reason">* (Min of $30.00)</span> 
</label> 

所有的文字我用硒的webdriver的Python:我似乎无法找到一个标签标记

driver.find_element_by_xpath("//label[@ class = 'control-label']/span[@class = 'required']").text 

和唯一的text我回来是asterisk *,不显示(Min of $30.00)。 有谁知道这是为什么?

+0

你确定两个文本存在于同一个'span'里吗?或者你的定位器是唯一的? –

+0

这个定位器太宽了,你可能会匹配一个不同的元素。尝试让你的定位器更具体,例如:''driver.find_element_by_css_selector('span [ng-show * =“rentalInfo.reason”]')' – alecxe

+0

@Saurabh Gaur,html与我的描述完全一致。 – Tosyneno

回答

0

我猜这是一个计时问题。 Wait为“$”存在于要素明确地text_to_be_present_in_element预期条件:

from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 

wait = WebDriverWait(driver, 10) 
elm = wait.until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, 'span[ng-show*="rentalIn‌​fo.reason"]'), "$")) 
print(elm.text) 
+0

它不是一个时间问题。我尝试了你的建议,并得到了TimeoutException。这很疯狂。 – Tosyneno

+0

@Tosyneno然后,你可能没有做出一些必要的事情来显示。很难说。 – alecxe

0

很难说什么是你的情况的问题,但它不是时间问题。你应该尝试如下使用get_att‌​ribute()可能是它可以帮助: -

driver.find_element_by_css_selector("span.required[ng-show*='rentalIn‌​fo.reason']").get_att‌​ribute("textContent"‌​) 

driver.find_element_by_css_selector("span.required[ng-show*='rentalIn‌​fo.reason']").get_att‌​ribute("innerHTML") 
0

我想有点像具体建议@alecxe。所以我用xpath driver.find_element_by_xpath(“// span [@ ng-show ='vm.rentalInfo.reason']”)。text它给了我全文“*(Min of 30.00)”。感谢Saurabh Gaur和alecxe的回应。

相关问题