如何检查导致网页元素在Python Selenium中不可见的原因?

1 投票
1 回答
1148 浏览
提问于 2025-04-18 06:18

我正在尝试使用Python的Selenium库点击网页上的一个按钮,但Selenium却报错说“元素当前不可见,因此无法进行交互”。

网页的结构很简单:

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

我在谷歌和Stackoverflow上搜索过。有些用户说Selenium无法点击那些在父节点上有overflow: hidden样式的网页元素。但让我惊讶的是,我发现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选择这个按钮。

我想知道如何检查是什么原因导致Python Selenium看不到这个网页元素?

1 个回答

1

溢出(Overflow)属性只有五种可能的值:(overflow: auto | hidden | scroll | visible | inherit)。你可以使用visible这个值。

撰写回答