我想点击列表中的元素,但问题是,该元素存在于列表中,但由于该列表的大小,所需的元素在页面上不可见(当前帧)。要点击所需元素,我必须向下滚动列表,然后该元素才可见。
请建议我怎么做。我正在使用Ruby的Selenium Webdriver。
答案 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类单击它。