请参阅底部的更新!
我正在设置我的框架,目前有4个测试。它们各自都像魅力一样。但是,当我尝试并行运行所有4个时(我已正确设置了Parallelizable属性并且正在调用来自不同类的测试,而不是在同一个方法中)我一直得到几个似乎跳过的错误围绕每个测试。这些是我每次运行的消息:
再次单独运行测试时会找到这些对象。我不确定我需要显示哪些代码才能提供帮助。请指教。
更新** @Chris我的怀疑是一样的。我认为我的测试在查找对象时会混淆相同的驱动程序。如果是这种情况可以有人请建议如何更好地处理这个,我的浏览器类就是调用驱动程序。
public class Pages
{
private T GetPage<T>() where T : new()
{
var page = new T();
PageFactory.InitElements(Browser.Driver, page);
return page;
}
public LoginPage Login
{
get { return GetPage<LoginPage>(); }
}
public RegisterPage Register
{ get { return GetPage<RegisterPage>(); } }
public SearchPage Search
{ get { return GetPage<SearchPage>(); } }
}
最新更新:根据建议,我删除了静态引用,但有人可以帮我解释在当前代码中创建驱动程序实例的语法
{{1}}
我不知道如何创建Browser.Driver的实例请帮忙!
答案 0 :(得分:0)
删除班级中对“static”的所有引用,并在每个测试中创建该类的实例以修复您的问题。
...现在更改您的Page类以接受构造函数中的驱动程序
public class Pages
{
private readonly ISearchContext _context;
public Pages(ISearchContext context)
{
_context = context;
}
private T GetPage<T>() where T : new()
{
var page = new T();
PageFactory.InitElements(_context, page);
return page;
}
public LoginPage Login
{
get { return GetPage<LoginPage>(); }
}
public RegisterPage Register
{ get { return GetPage<RegisterPage>(); } }
public SearchPage Search
{ get { return GetPage<SearchPage>(); } }
}
...然后在你的测试方法中
var browser = new Browser();
var page = new Page(browser.Driver);
答案 1 :(得分:0)
对不起。离开后发现了你的更新。
我有一个单独的类助手,用于返回我的Web驱动程序。我正在使用镀铬驱动程序和(无头)单元驱动程序,在我的机器上,策略需要几个参数才能使它运行,所以一个类本身就能让我理解。例如。 WebDriverHelper.java。这有几个静态方法,它们返回一个感兴趣的驱动程序的新实例。
E.g。
WebDriver myDriver = WebDriverHelper.ChromeDriver();
我的ChromeDriver方法会返回一个新驱动程序。
E.g。
return new ChromeDriver;
如果您需要更多细节,请告诉我,明天上班时我会复课。