如何通过 System.setProperty() 启动多个版本的 Geckodriver
Posted
技术标签:
【中文标题】如何通过 System.setProperty() 启动多个版本的 Geckodriver【英文标题】:How to initiate multiple versions of Geckodriver through System.setProperty() 【发布时间】:2020-05-20 06:54:03 【问题描述】:我不知道我是否在监督某些事情,但是否可以在同一个 JVM 中使用多个 geckodriver 版本?
问题出在
System.setProperty("webdriver.gecko.driver", "path of the geckodriver1");
driver1 = new FirefoxDriver();
System.setProperty("webdriver.gecko.driver", "path of the geckodriver2");
driver2 = new FirefoxDriver();
我将在其中定义系统属性。对于单个实例,这没问题并且工作正常,但是如何用另一个 geckodriver 定义 FirefoxDriver。进程将并行运行,因此全局设置会相互干扰。
我知道,您可以使用相同的驱动程序启动多个 Firefox 会话,但我需要支持不同的 Firefox 版本,因此我也在寻找具有多个 geckodrivers 的解决方案。
感谢您的建议。
【问题讨论】:
【参考方案1】:系统属性
程序可以使用System Properties 对象在其整个生命周期内维护其配置。 Selenium 的 java 客户端本身使用 Properties 对象来维护自己的配置。 System 类维护一个描述当前工作环境配置的Properties 对象。系统属性包括有关当前用户、Java 运行时的当前版本以及用于分隔文件路径名组成部分的字符的信息。
因此,您将无法在单个程序中使用多个 GeckoDriver版本。
演示
提取一些最重要的系统属性的演示:
代码块:
package Java_Experiments;
public class system_getProperty
public static void main(String[] args)
System.setProperty("webdriver.chrome.driver", "C:\\Utility\\BrowserDrivers\\chromedriver.exe");
System.out.println(System.getProperty("webdriver.chrome.driver"));
System.out.println(System.getProperty("subliminal.message", "Selenium WebDriver!"));
System.out.println("Java Runtime Environment version: "+System.getProperty("java.version"));
System.out.println("Java Runtime Environment vendor: "+System.getProperty("java.vendor"));
System.out.println("Java vendor URL: "+System.getProperty("java.vendor.url"));
System.out.println("Java installation directory: "+System.getProperty("java.home"));
控制台输出:
C:\Utility\BrowserDrivers\chromedriver.exe
Selenium WebDriver!
Java Runtime Environment version: 1.8.0_172
Java Runtime Environment vendor: Oracle Corporation
Java vendor URL: http://java.oracle.com/
Java installation directory: C:\Program Files\Java\jdk1.8.0_172\jre
【讨论】:
以上是关于如何通过 System.setProperty() 启动多个版本的 Geckodriver的主要内容,如果未能解决你的问题,请参考以下文章
设置java系统属性的最佳实践是什么,-D或System.setProperty()?(What is best practice for setting java system properties