Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation c#-selenium Nunit测试-如何对注册表单进行验证检查_Validation_Selenium_Nunit - Fatal编程技术网

Validation c#-selenium Nunit测试-如何对注册表单进行验证检查

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

嗨,我正在尝试测试这个在线报名表。我已经创建了一个测试,但我想对每个字段进行验证检查

e、 g。 用于名称字段

driver.FindElement(By.Id(“Name”)).SendKeys(“Clayton”)

我想尝试不同的文本/数字/字符,看看会发生什么,失败什么。 我有什么办法可以这样做吗? 请看代码

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?是否有可能收到您的电子邮件?所以你可以在这件事上帮我。你真是太好了,不。否则我就得为此向你开账单