对于 Java,最好的方法是使用WebDriver
接口(甚至RemoteWebDriver
类)将 Web 驱动程序对象定义为泛型类型。
WebDriver driver = new XYZDriver();
其中XYZ是您需要使用的特定浏览器的名称。下图显示了WebDriver
每个支持的浏览器的接口类型层次结构。
我不确定 OP 的“切换”浏览器是什么意思,但我认为 OP 的意思是能够在会话开始时选择不同的浏览器。尽管每个 Web 驱动程序具体化对初始化 Web 驱动程序实例有不同的要求,但有关如何执行此操作的一般概念是这样的:
public WebDriver initializeBrowser(string browserName) throws Exception {
WebDriver driver = null;
switch (browser.toLowerCase()) {
case "chrome":
driver = createChromeDriver();
break;
case "firefox":
driver = createFirefoxDriver();
break;
...
default:
throw new Exception("Unsupported browser: " + browserName);
}
return driver;
}
每个都createXXXDriver
应该封装创建驱动程序实例的过程,例如设置驱动程序位置的系统属性,设置所需的任何驱动程序选项(即设置无头模式,启动最大化或最小化等),最后调用相关的构造函数。
我在以前的项目中使用了这种方法,并且工作起来非常有魅力。在我的特殊情况下,我使用 VM 参数 (-Dbrowser=xxx) 传递了浏览器名称。这样做,让我不仅可以在本地机器上使用不同的浏览器运行测试,还可以配置我的 CI/CD 环境 (Jenkins) 以使用不同的参数运行确切的作业;其中之一是我想用于特定测试运行的浏览器。