电话号码这是我需要获取内部文本的元素
<a href="tel:895**49****" class="button-text action-link" title="Телефон продавца" rel="nofollow">
"8 9** **9-99-**"
</a>
当我使用
时phone = driver.find_element_by_class_name('button-text')
print phone.text
它返回空字符串,因为“”中的电话号码是text()节点
当我尝试这个
时print driver.find_element_by_xpath('/html/body/section/article/section[2]/ul/li[1]/a/text()')
或者
print driver.find_element_by_xpath('/html/body/section/article/section[2]/ul/li[1]/a/text()').text
它返回错误 InvalidSelectorException:消息:u'Error Message =&gt; \'xpath表达式“/ html / body / section / article / section [2] / ul / li [1] / a / text()”的结果是:[object 文本]。它应该是一个元素。
答案 0 :(得分:4)
您必须为返回元素指定xpath,而不是文本。因为硒与元素一起使用。
这应该有效:
print driver.find_element_by_xpath('/html/body/section/article/section[2]/ul/li[1]/a').text
注意:xpath表达式最后不能包含函数text()
(或类似的),因为它会导致返回text和selenium needs元素。对于Java中的selenium 2(webdriver)来说确实如此。
答案 1 :(得分:0)
我建议您使用以下“首选属性”来匹配,而不是类。
首选属性是:
由于您的元素具有title属性,因此使用CSS匹配。保存自己的麻烦和眼睛,即xpath。
print driver.find_element_by_css("a[title='Телефон продавца']").text