【问题标题】:Selenium : isDisplayed returnsSelenium : isDisplayed 返回
【发布时间】: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 的计算样式。

标签: exception selenium click


【解决方案1】:

我设法用一个简单的技巧解决了我的问题:调用应该由点击触发的 Js 函数,使用

JavascriptExecutor js; 
if (driver instanceof JavascriptExecutor) {
    js = (JavascriptExecutor) driver;
} else {
    throw new Exception("  Webdriver do not manage JS");
}
js.executeScript("function()");

如果你当然有它的坐标(或者如果你可以计算它),另一个可能合适的解决方案是使用机器人使用鼠标点击这个 img:

Robot robot = new Robot();
robot.mouseMove(300, 300);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);

虽然我没有找到显示/未显示问题的解决方案。 享受:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 2016-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多