【发布时间】: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把<body>样式改成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