无法在弹出窗口(非主窗口)中单击重叠元素,如何滚动查看?

时间:2012-12-11 04:38:18

标签: webdriver

enter image description here

如您所见,我可以点击第一个复选框(PRODUCT-323),但不能点击第二个。很久以后
尝试,我发现它是因为第二个没有滚动查看(它是用于工具设计还是一个bug?)。那么如何滚动这个弹出div以确保第二个显示?

实际上,我试过这个,但失败了

 ((JavascriptExecutor)driver).executeScript("document.getElementById("pupop").scrollTo(0,30)");

3 个答案:

答案 0 :(得分:1)

您能否分享一下您使用的WebDriver版本? 如果我没记错的话,版本2.16左右有一个已知问题,定位器不能滚动到视图中。原因是,他们使用元素中心的位置坐标来聚焦,在这种情况下,中心被隐藏在视野之外。这在以后的版本中得到了解决。

有几种方法。 1)尝试对视图完全隐藏的元素执行某些操作。这将使元素完全进入视图,您将能够访问它。 在这种情况下,尝试访问第3行或第4行中的复选框,您将能够将焦点放在那里。然后访问第二行。 2)做一个Driver.Manage()。Window.Maximize()[这是在c#中]。这也将使元素进入视野。

避免使用两个滚动条的窗口是一个好习惯。通过最大化它,您将减少此类错误的窗口。

希望这很有用。

答案 1 :(得分:0)

你试过键盘选项吗? ctrl +向下箭头通过脚本??? 或者在最坏的情况下使用选项卡专注于该复选框..我以这种方式使用OpenScript和RFT。

答案 2 :(得分:0)

1)单击第二个复选框:您可以使用xpath查找该元素。在xpath中,您可以轻松获取每个复选框的表行ID,这些复选框的ID会增加。 2)要滚动,您可以使用以下代码:

JavascriptExecutor js = (JavascriptExecutor) webdriver;
js.executeScript("scroll(0,0);");