【问题标题】:Unable to locate element with xPath无法使用 xPath 定位元素
【发布时间】:2021-02-11 16:38:55
【问题描述】:

我真的要疯了才能在特定网页中找到一个元素。这是一个“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°ATTEMPT - 使用 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°ATTEMPT - 带有 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个“进入”按钮。他们是平等的。唯一改变的是不同的“html地址”。这就是为什么我在函数中使用这种类型的参数。

标签: python selenium selenium-webdriver web-scraping findelement


【解决方案1】:

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

会更容易理解和支持。

【讨论】:

    【解决方案2】:

    我明白了。

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

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

    非常感谢您的帮助,很抱歉信息不完整。

    【讨论】:

      【解决方案3】:

      你可以试试这个

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

      【讨论】:

        猜你喜欢
        • 2016-07-01
        • 1970-01-01
        • 2021-08-01
        • 2018-03-15
        • 1970-01-01
        • 2014-07-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多