我可以使用PHPUnit_Extensions_Selenium2测试页面的Tab键顺序吗?

时间:2013-07-03 07:31:56

标签: selenium phpunit tab-ordering

我想在我的页面上测试输入字段的Tab键顺序,我想我可以看起来像这样:

#get the number of inputs on the page
$input = $this->elements($this->using('css selector')->value('div.wrapper input'));

for ($i=1; $i <= count($input); $i++) 
{ 
    #just to set focus on the field i know is the first
    if($i == 1)
    {
    $this->byId('myFirstField')->value($i);
    }   
    else
    {
    $this->keysSpecial('TAB');
    $this->get current element in focus->value($i);
    }       
}

然后我可以坐在那里看到数字是按照正确的顺序写的,或者完全自动化它并断言每个字段的值都是正确的:

$this->assertEquals($this->byId('myFirstField')->value(), 1);
$this->assertEquals($this->byId('mySecondField')->value(), 2);

等等,但是你可以看到这段代码不能正常工作,我不知道如何告诉phpunit在当前输入字段中键入内容。是否有一种方法来调用焦点元素?即$ this-&gt; inFocus() - &gt; value($ i); ?

和btw我不能使用$ input [$ i-1] - &gt; value($ i);因为Tab键顺序和字段索引不一样。

2 个答案:

答案 0 :(得分:1)

这是一个使用java的基本示例,我应该能够在php中使用simulair解决方案。

TabOrderElements.class{
public WebElement element1 = driver.findElement(By.id(""));
public WebElement element2 = driver.findElement(By.id(""));
public WebElement element3 = driver.findElement(By.id(""));
public WebElement element4 = driver.findElement(By.id(""));
public WebElement element5 = driver.findElement(By.id(""));
}

public void validateTabOrder(){
    TabOrderElements tabOrderElements = new TabOrderElements();

    public  String[] tabOrder = {
      "element1",
      "element2",
      "element3",
      "element4",
      "element5"
    };

    for (String currentField: tabOrder ){    
        WebElement expected = (WebElement)elements.getClass().getField(currentField).get(tabOrderElements );
        WebElement actual = driver.switchTo().activeElement();
        String assertMessage    = "Incorrect tab order when trying to tab to: "+fieldName;
        Assert.assertEquals(assertMessage, expected, actual);
        driver.switchTo().activeElement().sendKeys(Keys.TAB);
    }
}

答案 1 :(得分:0)

我不知道PHP中的命令是什么,但是在Python中,你可以使用这样的命令:

element = driver.find_element_by_id("id of the field")
element.sendKeys(Keys.TAB, "Text you want to populate the field with")

应该有一个PHP等价物,也就是这个页面:http://docs.seleniumhq.org/docs/02_selenium_ide.jsp#building-test-cases也有你可能需要的信息。