Selenium UI 测试:TestCleanup() 在加载第一个测试后退出其余测试

Posted

技术标签:

【中文标题】Selenium UI 测试:TestCleanup() 在加载第一个测试后退出其余测试【英文标题】:Selenium UI Testing: TestCleanup() quits rest of the tests after the first test is loaded 【发布时间】:2017-02-11 00:41:38 【问题描述】:

我正在自动化我的 github 配置文件,以下是我的测试用例:

加载浏览器(在 testInitialize() 中定义 加载网址 执行登录 下面是sn-p的代码:

命名空间 GitAutomationTest 使用 Microsoft.VisualStudio.TestTools.UnitTesting; 使用 OpenQA.Selenium.IE; 使用 OpenQA.Selenium.Remote; 使用系统; [测试类] 公共类 GitTest 私有字符串 baseURL = "https://github.com/login"; 私有 RemoteWebDriver 驱动程序; 公共 TestContext TestContext 获取;放;

     [TestMethod]
     public void LoadURL() 
            driver.Navigate().GoToUrl(baseURL);
            Console.Write("Loaded URL is :" + baseURL);
        
        [TestMethod]
        public void PerformLogin()  
            driver.FindElementById("login_field").SendKeys("USERNAME");
            driver.FindElementById("password").SendKeys("PASSWORD");
            Console.Write("password entered \n ");
            driver.FindElementByClassName("btn-primary").Click();
            driver.GetScreenshot().SaveAsFile(@"screenshot.jpg", format: System.Drawing.Imaging.ImageFormat.Jpeg);
            Console.Write("Screenshot Saved: screenshiot.jpg");
        
        [TestCleanup()]
        public void MyTestCleanup()
        
            driver.Quit();
        
        [TestInitialize()]
        public void MyTestInitialize()
        
            driver = new InternetExplorerDriver();
            driver.Manage().Window.Maximize();
            Console.Write("Maximises The window\n");
            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(20));
        
    

输出 每次我运行所有测试时: - 测试已初始化:Internet Explorer 已加载 - 基础网址已加载 - 然后驱动程序退出 TestCleanUP()

驱动程序下次运行 testperformLogin() - 测试找不到执行登录的用户名和密码元素,因为这次没有加载base url。

我们如何管理 TestInitialize() 类: - 浏览器使用 baseurl 直到所有测试完成。 我们如何管理 TestCleanup() 以便: - 浏览器仅在所有测试完成后关闭。

【问题讨论】:

为什么不试试 Nunit 测试框架呢?请看一看。 nunit.org/index.php?p=docHome&r=2.6.4 【参考方案1】:

有一个AssemblyCleanup 属性在所有测试执行后运行。

您可以在此处找到有关属性的更多信息 - Unit Testing Framework。

【讨论】:

【参考方案2】:

您需要将以下代码移至“PerformLogin”测试方法

driver.Navigate().GoToUrl(baseURL);

或者另一种方法是在“Mytestinitialize”方法中添加以下代码并删除“LoadURL”方法

driver.Navigate().GoToUrl(baseURL);

您正面临这个问题,因为在每个 [TestMethod] 之前调用 [TestInitialize] 并且在每个 [TestMethod] 之后调用 [TestCleanup]。

在您的情况下,“LoadURL”测试能够获取 URL,但“PerformLogin”无法获取 URL,因为“MyTestInitialize”中没有提到它。

【讨论】:

以上是关于Selenium UI 测试:TestCleanup() 在加载第一个测试后退出其余测试的主要内容,如果未能解决你的问题,请参考以下文章

UI 自动化测试平台解决方案使用 Selenium IDE 录制 UI 自动化测试脚本

UI 测试 - 断言排序数据 (Katalon/Selenium) Java

Selenium 对于 Web UI 测试就像 ________ 对于 Windows 应用程序 UI 测试 [关闭]

text Selenium UI测试

selenium测试框架快速搭建(ui自动化测试)

UI自动化测试之selenium——selenium中的常用api