【问题标题】:How to check what is causing a web element to be invisible to Python Selenium?如何检查导致 Web 元素对 Python Selenium 不可见的原因?
【发布时间】:2014-06-30 01:33:54
【问题描述】:

我正在尝试使用 Python Selenium 单击网页上的按钮,但 Selenium 给出异常“元素当前不可见,因此可能无法与之交互”。

DOM 结构相当简单:

<body style="overflow: hidden;"> ... <div aria-hidden="false" style="display: block; ..."> ... <button id="button-aaa" aria-hidden="true" style="..."> ... </div> ... </body>

我搜索过 Google 和 Stackoverflow。一些用户说 Selenium 无法单击位于具有overflow: hidden 的父节点下的 Web 元素。但令人惊讶的是,我发现 Selenium 能够单击其他一些按钮,这些按钮也在 overflow: hidden 的父节点下。

反正我试过用driver.execute_script把&lt;body&gt;样式改成overflow: none,但是Selenium还是无法点击这个按钮。

我也试过把按钮的aria-hidden="true"改成aria-hidden="false",但是Selenium还是不能点击。

我也尝试将"display: block;"添加到按钮的样式中,并尝试了所有不同的样式更改组合,但Selenium仍然无法单击。

我已使用此命令检查按钮:buttonelement.is_displayed()。无论我在 DOM 中更改什么样式,它总是返回 False。该按钮在 Firefox 浏览器中清晰可见,并且可单击且正常运行。通过使用 Chrome 控制台,我可以使用 ID 选择按钮。

我可以知道如何检查导致 Web 元素对 Python Selenium 不可见的原因吗?

【问题讨论】:

  • 如果没有具体的例子,这个问题将很难回答。
  • 您可以使用以下方式获取页面源代码:browser.get(raw_input("Enter URL: ")) html_source = browser.page_source ,然后从那里继续。
  • afaik,溢出只能得到五个值(溢出:自动|隐藏|滚动|可见|继承)。试试visible
  • @AlexanderPetrovich 非常感谢!!将样式更改为overflow: visible 解决了问题!我已经解决这个问题很多天了。你帮了我很多。实际上,我从这篇 Stackoverflow 帖子 (stackoverflow.com/a/17684455/1460655) 中复制了代码。不知道为什么bbbco 在他的代码中使用overflow: none。无论如何,请将您的评论放在答案部分,以便我可以将其标记为已接受的答案。谢谢:)
  • 嗨,我不知道如何用 selenium java(java 脚本)做同样的事情,你能帮帮我吗 1. 如何将按钮的 aria-hidden="true" 更改为 aria-hidden= "false",2.如何将按钮的 aria-hidden="true" 更改为 aria-hidden="false"

标签: javascript python css selenium


【解决方案1】:

溢出仅采用(overflow: auto | hidden | scroll | visible | inherit) 的五个值之一。使用visible

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    相关资源
    最近更新 更多