Validation c#-selenium Nunit测试-如何对注册表单进行验证检查
嗨,我正在尝试测试这个在线报名表。我已经创建了一个测试,但我想对每个字段进行验证检查 e、 g。 用于名称字段 driver.FindElement(By.Id(“Name”)).SendKeys(“Clayton”) 我想尝试不同的文本/数字/字符,看看会发生什么,失败什么。 我有什么办法可以这样做吗? 请看代码Validation c#-selenium Nunit测试-如何对注册表单进行验证检查,validation,selenium,nunit,Validation,Selenium,Nunit,嗨,我正在尝试测试这个在线报名表。我已经创建了一个测试,但我想对每个字段进行验证检查 e、 g。 用于名称字段 driver.FindElement(By.Id(“Name”)).SendKeys(“Clayton”) 我想尝试不同的文本/数字/字符,看看会发生什么,失败什么。 我有什么办法可以这样做吗? 请看代码 using System; using System.Text; using System.Text.RegularExpressions; using System.Threadi
using System;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;
namespace SeleniumTests
{
[TestFixture]
public class loop
{
private IWebDriver driver;
private StringBuilder verificationErrors;
private string baseURL;
private bool acceptNextAlert = true;
[SetUp]
public void SetupTest()
{
driver = new FirefoxDriver();
baseURL = "http://something.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 TheSignupTest()
{
driver.Navigate().GoToUrl(baseURL + "/Account/Login?ReturnUrl=%2f");
driver.FindElement(By.Id("UserName")).Clear();
driver.FindElement(By.Id("UserName")).SendKeys("something");
driver.FindElement(By.Id("Password")).Clear();
driver.FindElement(By.Id("Password")).SendKeys("something");
driver.FindElement(By.CssSelector("input.btn.small")).Click();
driver.FindElement(By.Id("nav2")).Click();
driver.FindElement(By.Id("upload-file")).Click();
driver.FindElement(By.Id("Name")).Clear();
driver.FindElement(By.Id("Name")).SendKeys("00");
driver.FindElement(By.Id("ReferenceNumberPrefix")).Clear();
driver.FindElement(By.Id("ReferenceNumberPrefix")).SendKeys("00");
driver.FindElement(By.Name("submit")).Click();
}
private bool IsElementPresent(By by)
{
try
{
driver.FindElement(by);
return true;
}
catch (NoSuchElementException)
{
return false;
}
}
private bool IsAlertPresent()
{
try
{
driver.SwitchTo().Alert();
return true;
}
catch (NoAlertPresentException)
{
return false;
}
}
private string CloseAlertAndGetItsText()
{
try
{
IAlert alert = driver.SwitchTo().Alert();
string alertText = alert.Text;
if (acceptNextAlert)
{
alert.Accept();
}
else
{
alert.Dismiss();
}
return alertText;
}
finally
{
acceptNextAlert = true;
}
}
}
}
我认为将测试转换为参数化测试并使用 然后,您的测试可以如下所示:
[Test]
[TestCase("Clayton", "abc", true)]
[TestCase("Clayton", "def", false)]
public void TheSignupTest(string username, string password, bool isAccepted)
{
driver.Navigate().GoToUrl(baseURL + "/Account/Login?ReturnUrl=%2f");
driver.FindElement(By.Id("UserName")).Clear();
driver.FindElement(By.Id("UserName")).SendKeys(username);
driver.FindElement(By.Id("Password")).Clear();
driver.FindElement(By.Id("Password")).SendKeys(password);
driver.FindElement(By.CssSelector("input.btn.small")).Click();
driver.FindElement(By.Id("nav2")).Click();
driver.FindElement(By.Id("upload-file")).Click();
driver.FindElement(By.Id("Name")).Clear();
driver.FindElement(By.Id("Name")).SendKeys("00");
driver.FindElement(By.Id("ReferenceNumberPrefix")).Clear();
driver.FindElement(By.Id("ReferenceNumberPrefix")).SendKeys("00");
driver.FindElement(By.Name("submit")).Click();
if (isAccepted)
{
Assert.That(driver.Url, Is.EqualTo(baseURL + "/PageWhereClientIsRedirectedToAfterSuccessfulLogin"));
}
else
{
Assert.That(driver.FindElement(By.Name("ErrorBox")).Text, Is.EqualTo("Login failed"));
}
}
测试用例是使用testcase属性定义的:
[TestCase("Clayton", "abc", true)]
[TestCase("Clayton", "def", false)]
因此,您的测试运行程序中有两个测试用例。谢谢您的回答,但很抱歉,我是新来的。您能再定义一点吗。我是否需要在公开作废SignupTest()后使用TastCaseAttribute?是否有可能收到您的电子邮件?所以你可以在这件事上帮我。你真是太好了,不。否则我就得为此向你开账单