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

如何为Selenium Java FirefoxDriver设置环境变量?,java,selenium,firefox,Java,Selenium,Firefox,在Java单元测试中,我想使用Selenium用Firefox测试我的网页。我的测试要求我为Firefox设置一个环境变量。(具体来说,我想设置DISPLAY变量。) FirefoxBinary类有一个方法,听起来它应该为Firefox进程运行的环境设置环境变量,但实际上它并没有这种效果。(我已通过cat/proc//environment确认) 回到selenium java 3.0.1,我可以使用自定义环境变量构建Geckodriverse,并且FirefoxDriver构造函数接受驱动程序

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

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

回到selenium java 3.0.1,我可以使用自定义环境变量构建
Geckodriverse
,并且
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);
我真的不喜欢这种技术,因为各种原因(它有黑客行为,我必须在文件系统中为脚本创建一个临时文件等等)。

这个网站有帮助吗

从上述站点的步骤5开始,因为1-4正在安装东西:

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

  • 右击电脑
  • 点击属性
  • 单击“高级设置”
  • 在“系统属性”上,单击“高级”选项卡
  • 点击“环境变量”
  • 复制以下安装JDK的路径。C:\ProgramFiles\Java\jdk1.6.0\bin
  • 在环境变量窗口中,单击系统变量下的“新建” 并设置路径:C:\Program Files\Java\jdk1.6.0\bin。如果路径变量已经存在,则编辑它
  • 设置类路径:复制安装JDK的以下路径:
  • 在环境变量窗口中,单击用户变量下的“新建”,然后单击 设置类路径:
  • 环境已设置好,现在启动JAVA IDE

  • 从Selenium 3.7.1开始,接受
    geckodriverse
    服务的构造函数已经返回,因此您可以再次执行以下操作:

    Map<String, String> environment = new HashMap<>();
    environment.put("DISPLAY", ":1");
    GeckoDriverService service = new GeckoDriverService.Builder()
            .usingAnyFreePort()
            .withEnvironment(environment)
            .build();
    FirefoxDriver driver = new FirefoxDriver(service);
    
    Map-environment=newhashmap();
    环境。放置(“显示“,”:1”);
    GeckoDriverService服务=新的GeckoDriverService.Builder()
    .usingAnyFreePort()
    .withEnvironment(环境)
    .build();
    FirefoxDriver=新的FirefoxDriver(服务);
    
    那么,您需要指定FF二进制路径吗?如果是,请使用FirefoxProfile并查看此处:我需要设置DISPLAY环境变量。您所说的Firefox显示环境是什么意思?这不是系统环境变量吗?我想将Firefox环境中的DISPLAY变量的值设置为与系统的DISPLAY环境变量不同的值。谢谢,但我认为不是。这些说明用于设置系统或用户环境变量,但我只想为Firefox进程自定义环境变量。
    Map<String, String> environment = new HashMap<>();
    environment.put("DISPLAY", ":1");
    GeckoDriverService service = new GeckoDriverService.Builder()
            .usingAnyFreePort()
            .withEnvironment(environment)
            .build();
    FirefoxDriver driver = new FirefoxDriver(service);