为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用 xPath 定位元素

无法使用 xPath 定位元素

慕桂英4014372 2024-01-27 16:38:53
我简直要疯了才能在特定网页中找到某个元素。这是一个“Enter”按钮,但我一直无法找到它。错误信息: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='site.site.site'">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,但找不到。请帮我。
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

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

会更容易理解和支持。


查看完整回答
反对 回复 2024-01-27
?
阿晨1998

TA贡献2037条经验 获得超6个赞

我得到了它。


当我告诉你源代码中没有任何 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 参数。


我希望它对其他人来说清晰且有用。


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


查看完整回答
反对 回复 2024-01-27
?
万千封印

TA贡献1891条经验 获得超3个赞

你能试试这个吗

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


查看完整回答
反对 回复 2024-01-27
  • 3 回答
  • 0 关注
  • 238 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信