我正在进行自动化硒测试,该测试具有固定位置的标题。
div#floatingDiv {
position: fixed;
background-color: #000000;
color:white;
}
当尝试使用Firefox Web驱动程序自动化selenium测试时,这个浮动标题会受到阻碍。
似乎正在发生的事情是,当selenium单击当前离开屏幕的元素时,Firefox Web驱动程序会滚动页面,使其正在访问的按钮位于页面顶部,然后单击该元素。但是,由于标题具有固定位置,因此元素隐藏在标题后面,测试失败。
有没有办法直接控制硒中的滚动条?
我已经针对这个问题做了一些实验,我注意到这个问题只发生在访问页面底部但没有输入字段的按钮时。
答案 0 :(得分:1)
尝试以下未经测试的Java代码,您需要对滚动的位置和数量进行一些调整
WebElement input = (Locatable) driver.findElement(By.xpath("some path to your input"));
int y = (Locatable)input .getCoordinates().getLocationOnScreen().getY();
((JavascriptExecutor)driver).executeScript("window.scrollBy(0,"+y+");");
input.click();
答案 1 :(得分:1)
您需要使用scrollTo方法而不是menthod滚动。
public void scrollToElement(By by) {
Locatable element = (Locatable) selenium.findElement(by);
Point p= element.getCoordinates().getLocationOnScreen();
JavascriptExecutor js = (JavascriptExecutor) selenium;
js.executeScript("window.scrollTo(" + p.getX() + "," + (p.getY()+150) + ");");
}