如何在C#中使用硒Webdriver进行断言?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在C#中使用硒Webdriver进行断言?相关的知识,希望对你有一定的参考价值。
我正在使用C#中的Selenium WebDriver,必须为申请人创建服务。我已经做完了,但是在确认服务进入清单(需要从另一个用户确认的服务)之后,该清单在读取模式下增加了1。有什么方法可以断言每次添加新服务时这些增加1的值?
您需要使用测试框架来执行此操作-硒本身无法为您声明。
如果使用的是C#,建议安装NUnit
。您可以在NuGet程序包管理器下找到此文件,如果您使用的是Visual Studio,则还需要安装NUnitTestAdapter
。
一旦在项目上安装了测试框架,就可以使用[Test]
标志为测试用例指定入口点方法,并使用Assert
命名空间中的NUnit
语句。
您可以在这里找到文档:https://github.com/nunit/docs/wiki/NUnit-Documentation
Selenium的内置断言功能仅存在于SeleniumIDE中,SeleniumIDE是适用于Chrome和Firefox的点击式浏览器加载项。
如果您要像Christine所说的那样用C#编写测试,则需要使用单元测试框架。例如,我正在使用Xunit,一个简单的测试如下所示:
using Xunit; // Testing framework. NuGet package
using OpenQA.Selenium.Firefox; // Driver for Firefox
using Xunit.Priority; // NuGet add-on to Xunit that allows you to order the tests
using OpenQA.Selenium; // NuGet package
using System.Diagnostics; // Can Debug.Print when running tests in debug mode
namespace Test_MyWebPage
{
[TestCaseOrderer(PriorityOrderer.Name, PriorityOrderer.Assembly)] // Set up ordering
public class Test_BasicLogin : IDisposable
{
public static IWebDriver driver = new FirefoxDriver(@"path ogeckodriver");
// Here be the tests...
[Fact, Priority(0)]
public void Test_LaunchWebsite()
{
// Arrange
var url = "https://yourserver.yourdomain/yourvirtualdir";
// Act
// Sets browser to maximized, allows 1 minute for the page to
// intially load, and an implicit time out of 1 minute for elements
// on the page to render.
driver.Manage().Window.Maximize();
driver.Manage().Timeouts().PageLoad = new TimeSpan(0, 1, 0);
driver.Manage().Timeouts().ImplicitWait = new TimeSpan(0, 1, 0);
driver.url = url; // Launches the browser and opens the page
/* Assuming your page has a login prompt
/* we'll try to locate this element
/* and perform an assertion to test that the page comes up
/* and displays a login prompt */
var UserNamePrompt = driver.FindElement(By.Id("userLogin_txtUserName"));
// Assert
Assert.NotNull(UserNamePrompt); // Bombs if the prompt wasn't found.
Debug.Print("Found User Name Prompt successfully.");
}
public void Dispose()
{
// Properly close the browser when the tests are done
try
{
driver.Quit();
}
catch (Exception ex)
{
Debug.WriteLine($"Error disposing driver: {ex.Message}");
}
}
}
}
如您所见,为Selenium WebDriver设置测试要比使用SeleniumIDE设置简单的冒烟测试多得多。我还没有解决如何正确存储配置(在示例中使用硬编码是不好的方法),并且您将不得不定制driver.find()语句以适合您的具体情况。我正在使用Xunit.Priority包,因此我可以确保测试不会全部并行运行。我需要在进度中一次测试一件事。将所有步骤都放在一个Test_ *方法中可以满足您的需求。每种方法在Visual Studio“测试资源管理器”窗口中显示为单独的测试。右键单击“测试资源管理器”中的测试,然后选择“调试选定的测试”,您可以设置断点,还可以使Debug.Print(或Debug.Write / Writeline)方法显示在VS输出窗口的“测试”部分中。
另一个麻烦在于设置IWebDriver:请勿在路径中放入包含可执行文件的complete路径,而应将包含可执行文件的路径放在其中。
祝您好运,测试愉快!
以上是关于如何在C#中使用硒Webdriver进行断言?的主要内容,如果未能解决你的问题,请参考以下文章
如何强制Selenium WebDriver点击当前不可见的元素?