【问题标题】:(python) (selenium) message: no such element: Unable to locate element: [closed](python)(硒)消息:没有这样的元素:无法找到元素:[关闭]
【发布时间】:2021-05-24 07:26:23
【问题描述】:

我想使用 selenium 来单击文本框,但出现错误。 它是一个日期选择器,当我单击此文本框时,应该会出现弹出日历。

我使用了这个代码。

driver.find_element_by_xpath("""//*[@id="startDt"]""").click()

html code

【问题讨论】:

  • UI 的截图很棒,代码的截图不是。而是编辑您的问题并将 HTML 添加为格式正确的文本。此外,我们不知道您遇到了什么错误,因为它不在您的答案中。编辑您的答案并发布格式正确的完整错误消息。

标签: python selenium


【解决方案1】:

而不是这个:

driver.find_element_by_xpath("""//*[@id="startDt"]""").click()

使用这个:

driver.find_element_by_id("startDt").click()

除了检查 Iframe 之外,如果元素在框架内,则首先切换到框架,然后您可以与输入标签进行交互

【讨论】:

  • 我已经尝试过 id、name、css_selector 以及他们在 Google 上推荐的大多数方法,但我得到了同样的错误。谢谢。
  • 按照建议,请检查 iframe,我认为这可能是个问题。
  • @sophia:不客气!如果对你有帮助,你能接受这个答案吗?
  • 如果问题是 IFRAME 问题...这个答案不能解决问题,不应该被接受。
  • @JeffC :再读一遍As well as check for Iframe, if the element is inside the frame the switch to frame first and then you can interact with the input tag 这是给 OP 切换到框架的想法。如您所见,我没有编辑答案。 OP一开始没有分享足够的信息:)
【解决方案2】:

1)转到您的浏览器 -> 手动打开应用程序

2)打开检查器窗口(即按键盘上的功能键 f12)

3) 转到控制台选项卡,键入以下内容并单击输入:

$x("//*[@id='startDt']");

4) 如果在控制台中识别出元素并且计数为 1,那么您的定位器是正确的,但在 Selenium 中您会得到 NoSuchElementException, 那么您尝试定位的元素很有可能位于 iframe 内。如果是这样,找出 iframe 并切换到它,然后尝试调用 findElement 方法,它应该可以工作。

5)如果该元素在控制台中没有被识别,那么你的元素与你正在使用的 xpath 不存在/你的 xpath 是错误的。

您可以参考 [link][1] 了解有关评估和验证您的 xpath 过程的更多信息

[1]:https://yizeng.me/2014/03/23/evaluate-and-validate-xpath-css-selectors-in-chrome-developer-tools/#:~:text=From%20Console%20panel,%22)%20to%20evaluate%20and%20validate。

【讨论】:

    猜你喜欢
    • 2019-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多