如何为Selenium Java FirefoxDriver设置环境变量?
在Java单元测试中,我想使用Selenium用Firefox测试我的网页。我的测试要求我为Firefox设置一个环境变量。(具体来说,我想设置DISPLAY变量。) FirefoxBinary类有一个方法,听起来它应该为Firefox进程运行的环境设置环境变量,但实际上它并没有这种效果。(我已通过如何为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构造函数接受驱动程序
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)
从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);