我有li标签的列表,并且在每个li标签中都有一些带有强标签的文本和普通文本 // * [@@ =“ =” main“] / li [1] / strong的Xpath 我如何获取普通文本,如果我使用li标签的xpath,那么它将刮掉整个文本,有没有办法获取单独的文本
<li>
<strong>Heading</strong>
: Sample paragraph to get the text from here.
</li>
答案 0 :(得分:0)
如果您正在使用硒,则诱导JavaScript
执行程序并获取节点的lastChild
。
print(driver.execute_script('return arguments[0].lastChild.textContent;', driver.find_element_by_xpath('//*[@id="main"]/li[1]')))
答案 1 :(得分:0)
您可以获取<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, '')
答案 2 :(得分:-1)
要抓取普通文本,您需要为visibility_of_element_located()
引入 WebDriverWait ,并且由于所需的节点是 text节点,因此可以使用{{1} }方法以及以下Locator Strategy:
xpath 1 :
execute_script()
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']]")))))