Selenium WebDriver - 我怎么知道某条线已成功执行?

时间:2013-05-02 15:32:28

标签: java selenium automation webdriver

我正在测试一个Web应用程序,我的示例测试用例有三个步骤:

  1. 输入用户名
  2. 输入密码
  3. 点击“登录”

    driver.findElement(By.id("username")).sendKeys(username);
    driver.findElement(By.id("password")).sendKeys(password);
    driver.findElement(By.id("LoginButton")).click();
    
  4. 我需要生成一个报告,指定哪些步骤通过,哪些步骤失败。是否有一些机制可以让我知道每条线都成功执行了? Selenium是否有某种内置的活动/事件监听器?

4 个答案:

答案 0 :(得分:2)

如果您想记录所有基本步骤,例如点击,导航,查找元素等

我建议你添加一些事件监听器。您可以使用EventFiringWebDriver类。

一个例子:

EventFiringWebDriver events = new EventFiringWebDriver(this._driver);   

events.Navigated += new EventHandler<WebDriverNavigationEventArgs>(eventAfterNavigate);

您可以将事件处理程序定义为

private void eventAfterNavigate(object sender, WebDriverNavigationEventArgs e)
{
   Log("URL visited: " + e.Driver.Url);  // Call to your favourite log method
}

您可以在Webdriver API参考中找到更多可能的事件处理程序:http://selenium.googlecode.com/svn/trunk/docs/api/dotnet/html/AllMembers_T_OpenQA_Selenium_Support_Events_EventFiringWebDriver.htm

答案 1 :(得分:1)

您可以使用Verify或Assert来确保页面上存在或不存在某些内容。验证将返回布尔值并继续运行,而Assert on false将停止测试。

在这种特殊情况下,您可以验证是否在id = username的元素中键入了用户名。所以你的代码看起来像这样:

driver.findElement(By.id("username")).sendKeys(username); // this will enter username
assertEquals(selenium.getValue("id=username"), username); // this will check that text in your username field is 'username' (also you may use Assert.IsTrue)

据我所知,Selenium 2 Webdriver中有verifyTextPresent,所以你可以使用它:

try
{
assertEquals(selenium.getValue("id=username"), username); // put message into your log: success
}
catch (Exception)
{
// put message into your log: failed
}

我建议验证按钮点击,但等待您登录的某些通知:例如可能会出现“Hello,{username}”文本,或者也可能出现新元素(登录前缺席)。因此,如果此元素存在 - 您肯定已登录。

答案 2 :(得分:0)

如果您想查看每个步骤是否成功,那么我会设置一些断言(取决于您的单元测试框架)以验证步骤是否成功。

例如,要检查用户名字段是否实际收到输入,您可以立即验证用户名字段是否包含输入用户名的文本。

一些伪代码:

IWebElement element = driver.findElement(By.id("username"));
element.sendKeys(username);
assertsEquals(username, element.text);

同样,要验证单击是否成功,您可以检查并断言下一页上预期的元素是否存在,这将表明登录成功。

答案 3 :(得分:0)

如果Selenium没有抛出异常,则行成功执行

但问题是你如何定义成功?我会检查点击LoginButton后加载的网站,以确保Web应用程序的行为与您期望的一样。