我有一张表,其中每一行都有一个xpath,并且在每一行中嵌入一列。行的xpath中有一个标签,可根据您在该页面上选择的内容来更改文本。
<div class='xyz'>
<span> some text </span>
</div>
我在做//div[@class='xyz']/span.text()
但是,我无法从这里获取文本。
我在VSCode中使用python。
答案 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