【问题标题】:Getting text from <span> tag element从 <span> 标签元素获取文本
【发布时间】:2019-12-23 06:19:08
【问题描述】:

我有一个表,其中每一行都有一个 xpath,并且在每一行中嵌入了一个列。行的 xpath 中有一个标签,可以根据您在该页面上选择的内容更改文本。

<div class='xyz'>
  <span> some text </span>
</div>

我在做//div[@class='xyz']/span.text()

但是,我无法从此处获取文本。

我正在使用带有 VSCode 的 python。

【问题讨论】:

  • 这不是有效的语法//div[@class='xyz']/span.text()。您需要使用//div[@class='xyz']/span/text() 或仅使用此driver.find_element_by_xpath("//div[@class='xyz']/span").text

标签: python-3.x selenium-webdriver xpath css-selectors webdriverwait


【解决方案1】:

使用 xpath 从 span 标签获取文本的语法不正确。

这是正确的xpath

//div[@class='xyz']/span/text()

或者您可以使用.text 和网络驱动程序find_element_by_xpath 来提取文本。

span_text = driver.find_element_by_xpath("//div[@class='xyz']/span").text

如果/span//div[@class='xyz'] 的唯一子元素,那么您可以使用此路径代替driver.find_element_by_xpath("//div[@class='xyz']").text 上面的路径

您可以阅读有关如何将 xpath 与 selenium webdriver here 一起使用的信息。

【讨论】:

  • 谢谢,我当然在使用 "span_text = driver.find_element_by_xpath("//div[@class='xyz']/span").text" 但它没有得到它。
  • @Aboyhasnoname 可以给我你要抓取的网址吗?
【解决方案2】:

尝试使用xpath 波纹管:

get_text = driver.find_element_by_xpath('//*[@class="xyz"]').text
print get_text

【讨论】:

    【解决方案3】:

    要从所需元素中提取文本some text,您必须为visibility_of_element_located() 诱导WebDriverWait,您可以使用以下任一Locator Strategies

    • 使用CSS_SELECTOR

      print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.CSS_SELECTOR, "div.xyz>span"))).get_attribute("innerHTML"))
      
    • 使用XPATH

      print(WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//div[@class='xyz']/span"))).get_attribute("innerHTML"))
      
    • 注意:您必须添加以下导入:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-26
      • 2021-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多