5

获取一个包含大量文本字段、下拉列表等的标准网页。在 webdriver 中填写值然后验证值是否输入正确的最有效方法是什么。

4

2 回答 2

8

如果您在输入字段中发生了一些 javascript 验证或其他魔法,您只需测试输入的值是否正确。您不想测试 webdriver/selenium 是否正常工作。

有多种方法,具体取决于您是要使用 webdriver 还是 selenium。这是我正在使用的东西的杂烩。

Assert.assertEquals("input field must be empty", "", selenium.getValue("name=model.query"));
driver.findElement(By.name("model.query")).sendKeys("Testinput");
//here you have to wait for javascript to finish. E.g wait for a css Class or id to appear
Assert.assertEquals("Testinput", selenium.getValue("name=model.query"));

仅使用 webdriver:

WebElement inputElement = driver.findElement(By.id("input_field_1"));
inputElement.clear();
inputElement.sendKeys("12");
//here you have to wait for javascript to finish. E.g wait for a css Class or id to appear
Assert.assertEquals("12", inputElement.getAttribute("value"));
于 2012-08-09T10:30:27.130 回答
2

希望用户能够以某种方式看到填写表单的结果。所以你可以按照这些 BDD 式的思路来思考:

When I create a new movie
Then I should see my movie page

也就是说,您的“新电影”步骤将执行字段输入和提交。而您的“然后”会断言电影会显示您输入的数据。

element = driver.find_element(:id, "movie_title")
element.send_keys 'The Good, the Bad, the Ugly'
# etc.
driver.find_element(:id, "submit").click

我现在只是涉足这个,但这是我迄今为止想出的。它肯定看起来比 Capybara 之类的更冗长:

fill_in 'movie_title', :with => 'The Good, the Bad, the Ugly'

希望这可以帮助。

于 2013-07-09T16:43:06.267 回答