我正在使用Selenium Webdriver自动化网站测试。在每个事件之后,我想验证操作是否成功。什么是最好的方法。 例如,当用户单击“登录”按钮时,如何验证是否加载了正确的网页? 我现在正在做的一件事是获取结果页面的来源并查找该页面中的特定单词以进行确认。如果那些单词存在,我假设页面确实已加载。但我不认为这是一个很好的方式。
答案 0 :(得分:3)
如果您使用的是Selenium Webdriver,您显然可以使用WebDriver.findElement(按定位器)来检查某个对象是否只会出现在您正在等待的页面中。例如,要检查登录是否成功,您可以验证页面中是否存在“Logout”对象。
您无需获取源并检查所需文本。如果Logout按钮的ID为“Logout”,则行适合您...
assertTrue(driver.findElements(By.id("Logout").length > 0);
答案 1 :(得分:0)
您应该测试一般功能,而不是样式等是正确的。自动测试优于手动测试的优势在于,使用各种不同的数据测试事物非常容易,并且在更改后快速重新运行它们。通常,您假设页面看起来正确,您只想在多种不同情况下测试程序逻辑。
例如,如果您登录,请检查用户是否显示为已登录,并且说明正确显示了首页(通过仅显示在首页特定位置的某些文字)。或者,如果您有多页表单,用户输入各种数据,请检查摘要页面是否正确列出了所有内容。
不要检查抓取整个源并解析它,而应该使用类似的东西:
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import org.junit.*;
public class LoginTest extends WebDriverTest /* This would be your own superclass, from which you inherit the WebDriver instance. */ {
private User user = new User();
@Before
public void setUp() {
user.setName("Test Tommy");
user.setPassword("foobar");
}
@Test
public void userNameShouldBeShownAfterLogin() {
// Go to your page and do the login, then wait for page load.
String userNameOnPage = driver.findElement(By.id("usernameAfterLogin"));
assertThat(userNameOnPage, is(equalTo(user.getName())));
}
}
答案 2 :(得分:0)
页面对象设计模式将是您需求的理想选择。这一切都带来了其他好处。请参阅此链接https://code.google.com/p/selenium/wiki/PageObjects