如何点击列表中当前可见帧不可见的元素?

时间:2013-06-06 11:21:24

标签: selenium webdriver selenium-webdriver

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

请建议我怎么做。我正在使用Ruby的Selenium Webdriver。

4 个答案:

答案 0 :(得分:1)

你可以尝试这个,扫描元素的xpath(或者你认为正确的方式)当它可见时,用js点击它
在这里,我想单击“退出”,只有在鼠标悬停时才能在下拉菜单中看到。

WebElement hiddentElement = driver.findElement(By
                                .xpath("//*[@id='navright']/li[3]/ul/li[2]/a"));
                ((JavascriptExecutor) driver).executeScript("arguments[0].click();",
                                hiddentElement);

答案 1 :(得分:0)

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

你可能最终会遇到异常。

答案 2 :(得分:0)

您可以将方法getLocationOnScreenOnceScrolledIntoView用于make WebDriver scroll the element into view

if (element instanceof Locatable) {
    Locatable remoteElement = (Locatable) inputElement;          
    remoteElement.getLocationOnScreenOnceScrolledIntoView();
}

答案 3 :(得分:0)

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