Python Selenium:查找h1元素但返回空文本字符串

时间:2017-04-15 18:33:31

标签: python selenium xpath hidden

我正在尝试在page上的标题中找到文字:

enter image description here

  

iShares FTSE MIB UCITS ETF EUR(Dist)

标签如下所示:

<h1 class="product-title" title="iShares FTSE MIB UCITS ETF EUR (Dist)"> iShares FTSE MIB UCITS ETF EUR (Dist) </h1>

我正在使用此xPath:

xp_name = ".//*[@class[contains(normalize-space(.), 'product-title')]]"

在Selenium WebDriver for Python中通过.text检索:

new_name = driver.find_element_by_xpath(xp_name).text

驱动程序找到xpath,但是当我打印new_name时,macOS终端只打印一个空字符串:""

这可能是什么原因?

enter image description here

注意:我还尝试了其他一些xpath替代方案,获得相同的结果,例如:

xp_name = ".//*[@id='fundHeader']//h1"

2 个答案:

答案 0 :(得分:11)

问题在于,有两个h1元素具有完全相同的外部HTML:第一个是隐藏的,第二个不是。您可以使用

进行检查
print(len(driver.find_elements_by_xpath('//h1[@class="product-title "]')))

text属性允许您从仅可见元素获取文本,而textContent属性也允许获取隐藏

的文本>

尝试替换

new_name = driver.find_element_by_xpath(xp_name).text

new_name = driver.find_element_by_xpath(xp_name).get_attribute('textContent')

或简单地处理第二个(可见)标题:

driver.find_elements_by_xpath('//h1[@class="product-title "]')[1].text

答案 1 :(得分:0)

正如@ahmad-moussa 提到的,对我来说,解决方案是:

import time

(...)

time.sleep(1)
# before 
<webelement>.text