如何为Selenium Java FirefoxDriver设置环境变量?

时间:2017-05-18 20:35:16

标签: java selenium firefox

在Java单元测试中,我想使用Selenium用Firefox测试我的网页。我的测试要求我为Firefox设置一个环境变量。 (具体来说,我想设置DISPLAY变量。)

FirefoxBinary类有一个方法setEnvironmentProperty,听起来应该为Firefox进程运行的环境设置环境变量,但实际上它没有那种效果。 (我已用cat /proc/<firefox_pid>/environ确认了。)

回到selenium-java 3.0.1,我可以使用自定义环境变量构建GeckoDriverServiceFirefoxDriver构造函数接受驱动程序服务作为参数,如下所示:

Map<String, String> customEnvironmentMap = new HashMap<>();
customEnvironmentMap.put("DISPLAY", ":1");
GeckoDriverService driverService = new GeckoDriverService.Builder(binary)
        .withEnvironment(customEnvironmentMap)
        .usingPort(0)
        .build()
FirefoxDriver driver = new FirefoxDriver(driverService, capabilities, null);

自定义变量将出现在geckodriver进程的环境和Firefox进程的环境中。

版本3.4.0中没有该构造函数,FirefoxDriver使用私有方法创建驱动程序服务,因此我无法对其进行自定义。那么,我如何配置Selenium推出的Firefox进程的环境?

我目前的解决方法是将这样的脚本替换为geckodriver可执行路径:

#!/bin/bash
exec /usr/bin/env DISPLAY=:1 /path/to/geckodriver $@

由于各种原因(我不得不为文件系统中的脚本创建临时文件等,我不喜欢这种技术)。

2 个答案:

答案 0 :(得分:1)

从Selenium 3.7.1开始,带有GeckoDriverService的构造函数已经返回,因此您可以再次执行以下操作:

Map<String, String> environment = new HashMap<>();
environment.put("DISPLAY", ":1");
GeckoDriverService service = new GeckoDriverService.Builder()
        .usingAnyFreePort()
        .withEnvironment(environment)
        .build();
FirefoxDriver driver = new FirefoxDriver(service);

答案 1 :(得分:0)

这个网站有帮助吗? https://testautomationarchives.blogspot.com/2013/08/how-to-configure-selenium-webdriver.html

从上述网站的第5步开始,因为1-4正在安装内容:

步骤5:设置环境变量(Windows 7)

  1. 右键单击计算机
  2. 点击“属性”
  3. 点击'高级设置'
  4. 在'系统属性'上单击选项卡'高级'
  5. 点击'环境变量'
  6. 复制以下安装JDK的路径。 C:\ Program Files \ Java \ jdk1.6.0 \ bin
  7. 在环境变量窗口中单击“系统变量”下的“新建” 和设置路径:C:\ Program Files \ Java \ jdk1.6.0 \ bin。如果路径变量已存在则编辑它。
  8. 设置CLASSPATH:复制以下安装JDK的路径:
  9. 在环境变量窗口中单击“用户变量”下的“新建” 设置CLASSPATH:
  10. 现在设置Enviornment启动JAVA IDE