问题描述
我在返回通过xpath找到的文本时遇到问题。首先,我需要通过CSS选择器找到元素:
ticker1 = browser.find_element_by_css_selector('[data-id="1"]')
print(ticker1.get_attribute('innerHTML'))
<div class="header_card"><div class="header_card_title">Day's Title<i class="fa fa-info-circle
toolTrigger" data-title="Day's Title" data-
id="DaysTitle-tooltip" data-model="what-is-this"></i></div><div
class="header_card_trend_symbol headerTrend" data-title="" data-id="1" data-process=""
data-categories="" data-datapoints=""><i class="fa fa-arrow-circle-o-down ph_trend_red"></i></div>
<div class="header_card_metric_value" data-id="1"><span>$0</span></div></div><div
class="header_bars_container"><a href="#" class="dropdown-toggle" data-toggle="dropdown"
data-boundary="viewport" role="button" aria-haspopup="true" aria-expanded="false"><i class="fa fa-
bars optionsIconDropDown"></i></a><ul class="dropdown-menu drop-sm" style="position: relative; right:
10px; top: -16px !important; "><li></li><li><a href="#" class="headerTrend" data-title="Prior Day's
Production" data-id="1" data-open="" data-process="" data-categories="" data-datapoints="">Trend</a>
</li></ul></div>
然后我通过xpath访问子元素
t1l = ticker1.find_element_by_xpath(".//div[@class='header_card_title']")
print(t1l.get_attribute('innerHTML'))
Day's Title<i class="fa fa-info-circle toolTrigger" data-title="Day's Title"
data-id="PriorDaysProduction-tooltip" data-model="what-is-this"></i>
我尝试.text
,get_attribute('text')
和get_attribute('values')
全部返回''
解决方法
弄清楚了,
它是get_attribute('innerText')
,尽管不确定原因。
你是如此亲密。代替get_attribute('innerHTML')
,您需要提取 text 属性,如下所示:
t1l = ticker1.find_element_by_xpath(".//div[@class='header_card_title']")
print(t1l.text)
理想情况下,要打印文本 Day's Title ,您必须为visibility_of_element_located()
引入WebDriverWait,并且可以使用以下任一Locator Strategies:>
print(WebDriverWait(ticker1,20).until(EC.visibility_of_element_located((By.XPATH,".//div[@class='header_card_title']"))).text)
您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
您可以在How to retrieve the text of a WebElement using Selenium - Python
中找到相关的讨论
Outro
链接到有用的文档:
-
get_attribute()
方法Gets the given attribute or property of the element.
-
text
属性返回The text of the element.
- Difference between text and innerHTML using Selenium