部分页面来源:
<span style="display:block; overflow:hidden; white-space: nowrap">Gi2/0/20</span>
部分代码:
from selenium import webdriver
...
driver = webdriver.Chrome()
...
IP_CLICK = browser.find_element_by_xpath('//span[@style="display:block; overflow:hidden; white-space: nowrap"]/text()="Gi2/0/20"').click()
我正在尝试使用xpath
表达式选择网页中的一个元素,但是出现以下错误:
InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression //span[@style="display:block; overflow:hidden; white-space: nowrap"]/text()="Gi2/0/20" because of the following error:
TypeError:无法对'Document'执行'evaluate':结果不是节点集,因此无法转换为所需的类型。 (会议信息:chrome = 72.0.3626.121) (驱动程序信息:chromedriver = 73.0.3683.20(8e2b610813e167eee3619ac4ce6e42e3ec622017),platform = Windows NT 6.1.7601 SP1 x86_64)
答案 0 :(得分:0)
您的xpath应该是:
//span[@style="display:block; overflow:hidden; white-space: nowrap" and text()="Gi2/0/20"]
它将寻找与span
和@style
值匹配的text()
元素。
答案 1 :(得分:0)
此错误消息...
TypeError: Failed to execute 'evaluate' on 'Document': The result is not a node set, and therefore cannot be converted to the desired type.
(Session info: chrome=72.0.3626.121) (Driver info: chromedriver=73.0.3683.20 (8e2b610813e167eee3619ac4ce6e42e3ec622017),platform=Windows NT 6.1.7601 SP1 x86_64)
...表示执行 xpath 表达式的结果不是节点集。
从语法上讲,您使用的 xpath 表达式是 legit xpath 表达式,该表达式使用text()
节点,如 parent_element/text()="Gi2/0/20"
,紧接着xpath v3.0。
不幸的是, Selenium 实现了xpath v1.0,它不支持text()
节点。
此外,click()
不返回任何内容,因此不需要IP_CLICK
。
对于元素上的click()
,可以使用以下解决方案之一:
Xpath 1 :
browser.find_element_by_xpath("//span[text()='Gi2/0/20']").click()
Xpath 2 :
browser.find_element_by_xpath("//span[contains(., 'Gi2/0/20')]").click()
答案 2 :(得分:0)
无效选择器:由于以下错误,无法定位具有 XPath 表达式 6000039318 的元素: 类型错误:无法在“文档”上执行“评估”:结果不是节点集,因此无法转换为所需类型。 回答: 当我使用 selenium 中的 sendKey() 方法将无效数据传递给元素时,我发现了这个错误。就像我使用 sendKey 方法传递元素的 XPath 代替 value(int, String) 一样。由于在属性文件中使用相同的数据属性名称和 Xpath,造成了这种混淆。