【问题标题】:Accessing Text from Xpath从 Xpath 访问文本
【发布时间】:2020-11-09 19:07:28
【问题描述】:

我在返回通过 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>

我试过.textget_attribute('text')get_attribute('values')都返回''

【问题讨论】:

    标签: python selenium xpath css-selectors getattribute


    【解决方案1】:

    想通了

    它是get_attribute('innerText'),虽然不知道为什么。

    【讨论】:

      【解决方案2】:

      你离得很近。您需要提取 text 属性,而不是 get_attribute('innerHTML'),如下所示:

      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找到相关讨论


      结尾

      链接到有用的文档:

      【讨论】:

      • 我试过.text,但没用,会返回空白''。
      • @DannyCabrera 查看更新后的答案并告诉我状态。
      猜你喜欢
      • 1970-01-01
      • 2022-10-05
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多