我有 li 标签列表,并且在每个 li 标签中都有一些带有强标签的文本和用于 //*[@id="main"]/li[1]/strong 的普通文本 Xpath 我如何获得普通文本,如果我采取li标签的xpath然后它会刮掉整个文本,有没有办法获得单独的文本<li><strong>Heading</strong>: Sample paragraph to get the text from here.</li>
3 回答
RISEBY
TA贡献1856条经验 获得超5个赞
您可以获取<li>文本并从中删除<strong>文本
element = driver.find_element_by_xpath('//*[@id="main"]/li[1]')
all_text = element.text
element = element.find_element_by_xpath('./strong')
text = all_text.replace(element.text, '')
SMILET
TA贡献1796条经验 获得超4个赞
如果您使用的是 selenium Induce JavaScript
Executor 并获取lastChild
节点的。
print(driver.execute_script('return arguments[0].lastChild.textContent;', driver.find_element_by_xpath('//*[@id="main"]/li[1]')))
慕勒3428872
TA贡献1848条经验 获得超6个赞
要抓取正常文本,您需要诱导WebDriverWait并且由于所需visibility_of_element_located()
的节点是文本节点,您可以使用execute_script()
方法以及以下定位器策略:
xpath 1:
print(driver.execute_script('return arguments[0].lastChild.textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//li[./strong[text()='Heading']]")))))
xpath 2:
print(driver.execute_script('return arguments[0].lastChild.textContent;', WebDriverWait(driver, 20).until(EC.visibility_of_element_located((By.XPATH, "//li/strong[text()='Heading']/..")))))
添加回答
举报
0/150
提交
取消