1

我想单击列表中的元素,但问题是,该元素存在于列表中,但由于该列表的巨大尺寸,所需元素在页面(当前帧)上不可见。要单击所需元素,我必须向下滚动列表,然后该元素才会可见。

请建议我如何做到这一点。我正在使用使用 Ruby 的 Selenium Webdriver。

4

4 回答 4

1

你可以试试这个,
当它可见时捕获元素的 xpath(或通过 id 任何你认为是正确的)
,然后使用 js 点击它
在这里我想点击仅在鼠标悬停时在下拉菜单中可见的注销。

WebElement hiddentElement = driver.findElement(By
                                .xpath("//*[@id='navright']/li[3]/ul/li[2]/a"));
                ((JavascriptExecutor) driver).executeScript("arguments[0].click();",
                                hiddentElement);
于 2013-06-07T09:33:58.880 回答
0

Selenium 应该模仿用户行为,因此默认情况下不支持单击不可见元素。

你可能会因为这样做而得到一个例外。

于 2013-06-07T11:07:19.517 回答
0

在类似情况下使用过以下解决方案,它对我有用。基本上获取列表的所有元素并使用 Actions 遍历每个元素并获取文本,如果它是必需的选项,则再次使用 Actions 类单击它。

于 2013-06-16T11:23:54.513 回答
0

您可以使用 getLocationOnScreenOnceScrolledIntoView 方法使 WebDriver 将元素滚动到视图中

if (element instanceof Locatable) {
    Locatable remoteElement = (Locatable) inputElement;          
    remoteElement.getLocationOnScreenOnceScrolledIntoView();
}
于 2013-06-07T13:13:03.943 回答