java - Selenium 3.141.59、Junit 4和Cucumber 6.10.2实现跨浏览器测试
问题描述
我得到了一些 selenium junit4 测试,这些测试针对 selenium 网格在多个浏览器上运行。我意识到这一点
@RunWith(Parameterized.class)
public class LoginTest {
public LoginTest(final RemoteWebDriver driver) {
this.browser = driver;
}
@Parameters
public static RemoteWebDriver[] browsers(){
return WebDriverFactory.getAll().toArray(RemoteWebDriver[]::new);
}
这样,一切都运行得很好。每个测试都使用我工厂中定义的浏览器实例运行。
但我想出了使用黄瓜测试的想法。测试正在运行,但我还需要实现多个浏览器部分。
所以我的方法是像上面那样做,定义@parameters并将它们传递给构造函数
喜欢:
public class LoginStepDefinition {
/** The browser. */
private final WebDriver browser;
/**
* Instantiates a new login step definition.
*
* @param driver the driver
*/
public LoginStepDefinition(final RemoteWebDriver driver) {
this.browser = driver;
}
/**
* Browsers.
*
* @return the remote web driver[]
*/
@Parameters
public static RemoteWebDriver[] browsers(){
return WebDriverFactory.getAll().toArray(RemoteWebDriver[]::new);
}
...
@Given...
@When...
@Then...
但后来我得到:
cucumber.LoginStepDefinition doesn't have an empty constructor. If you need dependency injection, put cucumber-picocontainer on the classpath
有没有办法在没有 TestNG 或任何其他框架的情况下实现这一点我的意思是我想要实现的只是用不同的浏览器运行单个黄瓜测试。
为了四舍五入,我正在使用 maven。
解决方案
推荐阅读
- android - 如何使子组件能够更改父组件的应用栏?
- reactjs - 使用传递给子项的道具从对象的 arr 访问数据 - 错误
- vb.net - 为什么将数组声明为常量时推断不起作用
- c# - 如何使用带有 null 参数的 x:Bind 函数绑定?
- python - Python数据框第一列偏移量
- python - 在 Python 中获取文件的所有属性
- kotlin - 如何在 kotlin 中调试 myBatis NoSuchMethodException?
- time - 我需要在 arduino 的 2 个给定时间之间发生一个过程
- python - 是否可以使用 UDP 进行透明代理?
- java - 如何将动画添加到启动画面?