我对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,但它看到它没有显示。
但我绝对可以在屏幕上看到同一div中的图像和其他元素。
关于这一点的任何帮助? 谢谢!
编辑:我使用JS来修改这些属性,特别是div 3,它没有显示并标记为在加载时没有显示,但是经过一些操作后,它变成了(它被标记为)显示。
编辑2:我发现标记为selenium未显示的两个div的样式都具有样式display:block;
(在chrome dev工具中可见)。有什么想法吗?
Edit3:根据评论中给出的链接,我添加了div的计算样式:
有什么想法吗?
答案 0 :(得分:0)
我设法用一个简单的技巧来解决我的问题:调用应该由点击触发的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);
虽然我找不到显示/未显示问题的解决方案。 享受:)