【发布时间】:2013-06-05 21:37:23
【问题描述】:
我对 Selenium 很陌生,所以这个问题可能很愚蠢,但我无法解决它......
我正在尝试使用 Selenium(在 Java 中,使用 Eclipse 和 Firefox 和 Chrome 驱动程序)在屏幕上肯定显示和可见的元素上进行 click(),但是当我应用时返回 false isDisplayed() 方法就可以了。所以我收到一个异常,告诉我该元素必须可见才能对其执行操作。
我检查了所有父母 div(我没有在我的页面中使用任何 iframe),其中一些返回 true,而其他返回 false。这是我尝试做的代码的一个小例子:
<div id=1><div id=2><div id=3><div id=4><img that i want to click on with selenium\></div></div></div></div>
我想点击带有 selenium 的 img,但它认为它没有显示。
- img 标记为未显示
- div4 被标记为未显示
- div3 被标记为 selenium 显示
- div2 被标记为未显示
- div1 被标记为显示,作为所有父 div
但我绝对可以在我的屏幕上看到同一 div 中的图像和其他元素。
在这一点上有什么帮助吗? 谢谢!
编辑:我用JS修改了这些属性,特别是div 3,加载时不显示并标记为不显示,但经过几次操作后,它变成(它是并且被标记为)显示。
编辑 2:我发现标记为不被 selenium 显示的两个 div 的样式都有 display:block; 样式(在 chrome 开发工具中看到)。有什么想法吗?
Edit3:基于 cmets 中给出的链接,我添加了 div 的计算样式:
- div4 :它的高度和宽度不为零,显示设置在块上。它甚至有最小宽度和最小高度。
- div3 : 高度和宽度不为零,显示也设置在块上
- div2 :它的高度为 0,宽度为非零,并且显示:块;所以这可能是问题所在。
- div1 : 高度为 0,非 sero 宽度,无显示参数,隐藏溢出-x 和 y。以为这个被 Selenium 标记为 deisplayed...
有什么想法吗?
【问题讨论】:
-
向我们展示实际 HTML,并尝试在面向公众的网站上重现此内容。
-
问题是实际的 HTML 是相当大的......而且由于它是由 JS 修改的,它甚至不会有它的“最终形式”。我正在尝试使用较小的 html 文件在公共网站上进行复制。
-
我无法使用简单的 html 文件重现相同的效果...但是我确实发现标记为未显示的 div Selenium 既有 syle="display:block;"在他们的计算样式中(在 Chrome 下)。有什么想法吗?
-
访问 Selenium 所基于的规范:w3.org/TR/webdriver/#determining-visibility,特别是关于元素可见性。该元素是否满足所有这些条件?
-
感谢此链接!基于此,我添加了标记为不被 selenium 显示的 div 的计算样式。