0

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

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

    driver.findElement(By.id("username")).sendKeys(username);
    driver.findElement(By.id("password")).sendKeys(password);
    driver.findElement(By.id("LoginButton")).click();
    

我需要生成一份报告,其中指定哪些步骤通过了哪些步骤失败了。是否有某种机制可以让我知道这些行中的每一行都成功执行了?Selenium 是否有某种内置的活动/事件监听器?

4

4 回答 4

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

于 2013-08-27T20:15:56.633 回答
1

您可以使用验证或断言来确保页面上存在或不存在某些内容。验证将返回布尔值并继续运行,而断言为 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
}

我建议验证按钮单击但等待您登录的一些通知:例如文本“你好,{用户名}”可能会出现,或者新元素(登录前不存在)也可能出现。因此,如果存在此元素 - 您肯定已登录。

于 2013-05-03T08:12:01.510 回答
0

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

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

一些伪代码:

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

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

于 2013-05-02T15:52:38.903 回答
0

如果 Selenium 没有抛出异常,那么行会成功执行

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

于 2013-05-02T15:54:57.940 回答