【问题标题】:How do I set environment variables for Selenium Java FirefoxDriver?如何为 Selenium Java FirefoxDriver 设置环境变量?
【发布时间】:2017-05-18 20:35:15
【问题描述】:

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

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

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

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 $@

我不太喜欢这种技术,出于各种原因(它很hacky,我必须在文件系统中为脚本创建一个临时文件等)。

【问题讨论】:

  • 那么,你需要指定FF二进制路径吗?如果是,请使用 FirefoxProfile 并查看此处:stackoverflow.com/a/24891650/1967021
  • 我需要设置DISPLAY环境变量。
  • Firefox 的显示环境是什么意思?那不是系统环境变量吗?
  • 我想将火狐环境中的DISPLAY变量的值设置为与系统的DISPLAY环境变量不同的值。

标签: java selenium firefox


【解决方案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);

【讨论】:

    【解决方案2】:

    这个网站有帮助吗? 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. 在环境变量窗口中单击用户变量下的“新建”,然后 设置类路径:
    10. 环境已设置,现在启动 JAVA IDE

    【讨论】:

    • 谢谢,但我不这么认为。这些说明用于设置系统或用户环境变量,但我只想为 Firefox 进程自定义环境变量。
    猜你喜欢
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 2011-02-13
    • 2011-12-30
    相关资源
    最近更新 更多