我目前正在使用C#,nunit
和Selenium构建一个自动化项目,我试图建立一个安装类,在任何TestFixture
运行之前初始化selenium webdriver并且在所有这些已经结束并尝试从每个TestFixture
TestFixture
属性中的OneTimeSetUp
获取该webdriver之后,是否可以完成或者我应该将selenium类更改为static以便能够在每个TestFixture
设置中获取驱动程序字段吗?
所以基本结构是这样的:
[SetUpFixture]
public class Test
{
[OneTimeSetUp]
public void Init()
{
_driver = new Driver();
}
}
[TestFixture]
public class FirstTest
{
[OneTimeSetUp]
public void Init()
{
xxxxxxxxxx - here I need to initialize a class with the driver from the setup class
}
}
答案 0 :(得分:2)
目前的情况是,NUnit可以为您执行此操作的唯一方法是使用静态。但如果您并行测试多个驱动程序,这将无法正常工作。
真正的解决方案(需要新的NUnit功能)是允许安装夹具在TestContext中保存信息,然后您的个人夹具可以访问。
解决方法是在fixture onetimesetup中创建一个新驱动程序,但前提是它尚未创建。这也需要静态,但您可以对其进行设置,以便为您支持的每种驱动程序类型提供单独的静态。
答案 1 :(得分:1)
可以通过重新使用远程Web驱动程序来完成。您必须获取会话的会话ID并将类扩展为重用远程Webdriver。然后,您可以使用URL和会话ID连接到每个测试类的现有会话。
答案 2 :(得分:0)
我对此使用Java和TestNG有类似的要求,但总体思路结构可能有所帮助。
我所做的是从设置驱动程序类型扩展我的每个测试类。因此,安装驱动程序类将选择浏览器和选项,导航到站点(或您需要执行的操作的第一页),然后测试类接管。但是,我可以通过使用@beforesuite和@aftersuite关键字将其保持在更高水平"而不是测试,所以它保持相同的实例。