在selenium中由标题隐藏的输入字段

时间:2013-05-13 21:34:11

标签: java firefox selenium-webdriver

我正在进行自动化硒测试,该测试具有固定位置的标题。

    div#floatingDiv {
        position: fixed;
        background-color: #000000;
        color:white;            
    }

当尝试使用Firefox Web驱动程序自动化selenium测试时,这个浮动标题会受到阻碍。

似乎正在发生的事情是,当selenium单击当前离开屏幕的元素时,Firefox Web驱动程序会滚动页面,使其正在访问的按钮位于页面顶部,然后单击该元素。但是,由于标题具有固定位置,因此元素隐藏在标题后面,测试失败。

有没有办法直接控制硒中的滚动条?

我已经针对这个问题做了一些实验,我注意到这个问题只发生在访问页面底部但没有输入字段的按钮时。

2 个答案:

答案 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) + ");");
}