问题描述
从字面上看,我在为特定网页中查找元素而疯狂。这是一个“输入”按钮,但我无法找到它。
错误消息:
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"input"}
(会话信息:chrome = 86.0.4240.111)
我将通过ChroPath Extension与您分享可能的选择器:
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参数。
我希望它对其他人很清楚并且有用。
非常感谢您的帮助,对于信息不完整深表歉意。