2013-05-13 69 views
1

我正在進行一項自動硒測試,其中包含一個固定位置的標題。硒中標題隱藏的輸入字段

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

當使用Firefox網絡驅動程序嘗試自動執行硒測試時,此浮動標題會變得越來越困難。

看來正在發生的事情是,當硒單擊一個當前離開屏幕的元素時,Firefox web驅動程序會滾動頁面,使得它正在訪問的按鈕位於頁面的頂部,然後單擊該元素。然而,由於標題具有固定的位置,所以元素隱藏在標題後面並且測試失敗。

有沒有辦法直接控制硒中的滾動條?

對這個問題做了一些更多的實驗後,我注意到這個問題只發生在訪問頁面底部但沒有輸入字段的按鈕時。

回答

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(); 
+0

getLocationOnScreen()返回元素相對於屏幕的位置。在我的代碼中,它返回0,0,因爲Firefox網絡驅動程序一旦訪問它就迫使元素滾動到屏幕的頂部。 – EsotericNonsense 2013-05-13 22:10:20

+0

@EsotericNonsense:然後再次向下滾動(不訪問元素)並單擊? – 2013-05-13 22:50:57

+0

使用javascript滾動爲我感謝提示。 – EsotericNonsense 2013-05-14 14:11:07

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