Selenium测试用例编写实践
本文关键字:测试用例 Selenium | 更新日期: 2023-09-27 18:22:02
我是自动化测试和硒的新手,看过很多硒教程。我意识到硒测试用例是用两种格式编写的,我不确定该用哪种格式。1)
namespace SeleniumTests
{
[TestFixture]
public class Login
{
private IWebDriver driver;
private StringBuilder verificationErrors;
private string baseURL;
private bool acceptNextAlert = true;
[SetUp]
public void SetupTest()
{
driver = new FirefoxDriver();
baseURL = "http://chapters.com";
verificationErrors = new StringBuilder();
}
[TearDown]
public void TeardownTest()
{
try
{
driver.Quit();
}
catch (Exception)
{
// Ignore errors if unable to close the browser
}
Assert.AreEqual("", verificationErrors.ToString());
}
[Test]
public void TheLoginTest()
{
driver.Navigate().GoToUrl(baseURL");
driver.FindElement(By.Id("loginCtrl_UserName")).Clear();
driver.FindElement(By.Id("loginCtrl_UserName")).SendKeys("operations");
driver.FindElement(By.Id("loginCtrl_Password")).Clear();
driver.FindElement(By.Id("loginCtrl_Password")).SendKeys("welcome");
driver.FindElement(By.Id("loginCtrl_LoginButton")).Click();
driver.FindElement(By.Id("btnInitialLoad")).Click();
Assert.AreEqual("Chapters", driver.Title);
}
}
}
2)
using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
namespace TestProject1
{
public class UnitTest1
{
public void main()
{
FirefoxDriver driver = new FirefoxDriver();
string baseURL = "http://seleniumhq.org/";
driver.Navigate().GoToUrl(baseURL);
driver.FindElement(By.LinkText("Projects")).Click();
driver.FindElement(By.LinkText("Selenium IDE")).Click();
Assert.AreEqual(driver.FindElement(By.XPath("//div[@id='mainContent']/table/tbody/tr/td/p/b")).Text, "Selenium IDE");
driver.Close();
}
}
}
我该选哪一个?感谢
第二种场景是简单的语句顺序流,没有任何框架(如Junit、TestNG、Nunit)的优势。对于刚开始使用Selenium2.0并希望使用webdriver提供的不同方法进行练习的人来说,这是一个不错的选择。
第一种情况是将代码逻辑划分为Nunit提供的不同注释,有了这些注释,人们可以从正在使用的下划线框架中获得巨大的功能,在Nunit的情况下,Nunit框架会按照定义的顺序自动调用这些注释。除此之外,这些框架还提供了许多其他功能,如报告、断言、对模拟对象的支持等
总是使用第一个场景来编写Selenium代码,因为在理解web驱动程序代码的同时,还可以掌握底层框架。