2013-08-21 27 views
2

我想硒按「TAB」對我來說,然後在重點領域寫東西寫,現在我知道我可以使用用Selenium按選項卡,然後用java

sendKeys(Keys.TAB) 

但據我瞭解它需要它後面的定位,我想測試我的網頁標籤秩序,做到這一點,我希望能夠通過頁面像這樣集中我的第一個元素而已,然後標籤我的方式:

--THE ELEMENTS IN THE TAB ORDER THEY ARE SUPOSED TO BE-- 
String[] elementArray = {"firstname","lastname", "phone", "email"}; 

for(int x = 0; x < 4; x = x+1) 
{ 
    WebElement theElement = driver.findElement(By.id(elementArray[x])); 
    if (x == 0) {driver.theElement.sendKeys(x)} 
    else{driver.(TheCurrentlyFocusedElement).sendKeys(x)} 

    String elementval = theElement.getAttribute("value"); 
    assertEquals(x, elementval);    
    (TheCurrentlyFocusedElement).sendKeys(Keys.TAB); 
} 

所以問題是,有沒有一種方法可以使我可以使用當前聚焦的元素作爲定位器?即:

driver.focusedElement().sendKeys(Keys.TAB); ? 

回答

3

這是你在找什麼 - driver.switchTo().activeElement();

+0

謝謝,正是我一直在尋找 – user1593846

0

我剛剛做同樣的事情,但發現發送標籤實際上並沒有改變焦點(它沒有當手動測試,只是不通過Selenium)。

我想證明屏幕上輸入字段的順序(在這種情況下定位更重要,然後Tab鍵),所以必須做如下的事情;

String[] elementArray = {"firstname","lastname", "phone", "email"}; 

List<WebElement> inputFields = driver.findElements(By.cssSelector("input")); 


for(int x = 0; x < 4; x++) 
{ 
    assertEquals(elementArray[x], inputFields.get[x]); 
} 

我可能會創建一個列表而不是一個數組,並比較這些,但你應該得到的主旨。

是的,我知道這是一個相當簡單的方法,並且這實際上並未證明字段一旦呈現就肯定是按照這個順序排列的,但它爲您提供了迴歸的一些安全性。

+0

是的,我願意但事情是所有的東西在製表順序不會是輸入字段,所以會有混合的輸入,並按鈕和選擇框 – user1593846

+0

當然,作爲我說,這是一個相對簡單的網站的簡單解決方案。當Tab無法自動化(確定這是網站的問題,而不是硒),這是我能想到的最好的。 –

相關問題