我想在我的页面上测试输入字段的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键顺序和字段索引不一样。
答案 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也有你可能需要的信息。