【问题标题】:Selenium : Test WebElements whose CSS attribute "OVERFLOW" is auto/scrollSelenium:测试其 CSS 属性“OVERFLOW”为自动/滚动的 WebElement
【发布时间】:2013-12-11 03:46:56
【问题描述】:

在下面的页面中,只显示了三个元素,我必须使用滚动条才能看到其他元素。
我正在使用硒网络驱动程序。
当我尝试单击“第四行”或“第五行”时,引发了 ElementNotVisibleException。
有什么方法可以移动 scoll 条(或其他方式?)以使“第四行”和“第五行”可见,然后可点击?

<b>Source code of this element:</b>
<pre>
<html><body>
<div style="WIDTH: 215px; HEIGHT: 50px; OVERFLOW: auto; background-color:#66FFCC">
<ul>
<li><div>First Row</div></li>
<li><div>Second Row</div></li>
<li><div>Third Row</div></li>
<li><div>Fourth Row</div></li>
<li><div>Fifth Row</div></li>
</ul>
</div>
</body></html>

【问题讨论】:

  • 滚动条最初是隐藏的吗?..

标签: java selenium webdriver


【解决方案1】:

好吧,我还没有看到任何 selenium api 来做到这一点。

但是使用JavaScriptExecutor 你可以做到这一点。

方法如下

//Select element by some method

WebElement we = driver.findElement(By.id("elementid"));

// create JSExecutor object

JavascriptExecutor executor = (JavascriptExecutor)driver;

// Do the JS click 

executor.executeScript("arguments[0].click();", we); 

【讨论】:

  • 谢谢你,@DigvijayYadav,@Amith003。 JavascriptExecutor 运行良好。 有什么方法可以模拟鼠标中键(滚轮)的运动吗? 如果可能的话,我可以将鼠标放在列表上并转动中键来显示隐藏的元素。
  • @user2432405:到目前为止,我不知道是否有任何方法可以模拟鼠标滚轮的动作,但是如果您的滚动容器位于单独的 iframe 中,那么您可能会再次使用javascriptexecutor 滚动。对于更高级的用户交互,您可能需要查看:code.google.com/p/selenium/wiki/AdvancedUserInteractions#Mouse
【解决方案2】:

第四行第五行最初是不可见的,您必须将鼠标悬停在其上下文之上才能使其可见.. 直接点击它的最简单方法是使用 javascriptExecuter,

((JavascriptExecutor)driver).executeScript("$('html ul li+li+li+li>div').click();");

如果你可以使用 id,name..etc 等属性,查找元素会更容易、更快、更高效..
上面的代码会点击“第四行”..

【讨论】:

  • 这假定页面上存在 jQuery。
猜你喜欢
  • 2019-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 2015-05-02
  • 2021-01-02
  • 2020-11-18
  • 1970-01-01
相关资源
最近更新 更多