2

我想让 selenium 为我按​​“TAB”,然后在重点领域写一些东西,现在我知道我可以使用

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

所以问题是,有没有一种方法可以让我将当前聚焦的元素用作定位器?IE:

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

2 回答 2

3

这就是你要找的—— driver.switchTo().activeElement();

于 2013-08-21T08:42:28.263 回答
0

我刚刚不得不做一些类似的事情,但发现发送选项卡实际上并没有改变焦点(它在手动测试时改变了,只是不是通过 Selenium)。

我想证明屏幕上输入字段的顺序(在这种情况下,定位比制表符更重要),所以必须执行以下操作;

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]);
}

我可能会创建一个列表而不是一个数组,然后比较它们,但你应该明白要点。

是的,我知道这是一种相当简单的方法,并且这实际上并不能证明字段在呈现后肯定是按该顺序排列的,但它为您提供了一些回归的安全性。

于 2013-08-21T09:43:34.453 回答