Selenium-Webdriver-Python:我似乎找不到标签标签中的所有文本

2024-04-25 06:49:20 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我曾经

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

我得到的唯一的textasterisk *(Min of $30.00)没有显示。 有人知道这是为什么吗?你知道吗


Tags: oftextshowrequiredvmminnglabel
3条回答

我试着像@alecxe建议的那样具体一点。所以我使用xpathdriver.find\元素\u by\ xpath(“//span[@ng show=”vm.rentalInfo.reason原因']''。text它给了我整个文本“*(最低30.00美元)”。感谢Saurabh Gaur和alecxe的回复。你知道吗

很难说你的问题是什么,这不是时间问题。您应该尝试使用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")

我猜这是个时间问题。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)

相关问题 更多 >