从<span>标签元素获取文本

时间:2019-08-17 02:25:13

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

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

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

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

但是,我无法从这里获取文本。

我在VSCode中使用python。

3 个答案:

答案 0 :(得分:2)

使用 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结合使用。

答案 1 :(得分:1)

尝试使用下面的xpath

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

答案 2 :(得分:0)

要从所需元素中提取文本一些文本,您必须为visibility_of_element_located()引入 WebDriverWait ,并且可以使用以下{{3 }}:

  • 使用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