无法使用xPath定位元素

问题描述

从字面上看,我在为特定网页中查找元素而疯狂。这是一个“输入”按钮,但我无法找到它。

错误消息:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"input"}

(会话信息:chrome = 86.0.4240.111)

我将通过ChroPath Extension与您分享可能的选择器:

ChroPathSelectors

ChroPathSelector(1)

HTML检查代码“输入”按钮:

<input type="button" value="Entra" onclick="parent.location.href='http://maremt.risorse.enel'">

摄氏1度-带有REL XPATH的PYTHON代码

elem = browser.find_element_by_xpath('//body[1]/div[1]/div[1]/div[2]/div[1]/table[1]/tbody[1]/tr[1]/td[2]/table[1]/tbody[1]/tr[3]/td[1]/input[1]')

2°温度-具有ABS XPATH的PYTHON代码

elem = browser.find_element_by_xpath('/html[1]/body[1]/div[1]/div[1]/div[2]/div[1]/table[1]/tbody[1]/tr[1]/td[2]/table[1]/tbody[1]/tr[3]/td[1]/input[1]')

我检查了是否有任何iframe,但找不到。 请帮帮我。

解决方法

我同意@josifoski。最好使用自定义xpath而不是由浏览器自动生成。因此,在您的情况下,请尝试使用以下xpath: xpath = '//input[@type="button"][@value="Entra"]'

这将更容易理解和支持。

,

你能试试吗

xpath = '//input[@value="Entra"]'
,

我明白了

当我告诉您源代码中没有任何iframe时,我错了。

有2个!

因此,这是单击“ Enter”按钮的正确代码:

browser.switch_to.frame(0)
browser.switch_to.frame(1)
elem = browser.find_element_by_css_selector('td:nth-child(2) input')
elem.click()

要弄清楚,我用Selenium Ide for Chrome浏览器记录了我的步骤,然后导出了python源代码,并且看到了2个switch_to.frame函数;然后我做了2加2 ...

就像您最终看到的那样,我根据导出的记录的源代码使用了css_selector参数。

我希望它对其他人很清楚并且有用。

非常感谢您的帮助,对于信息不完整深表歉意。