我有一个用Java编写的应用程序,创建一个特定的网站上的电子邮件帐户。由于某些原因,我需要在不同的windows用户帐户下运行程序的每个迭代。
我使用Selenium Grid (RemoteWebDriver)从中心服务器连接到远程服务器(网格)。
假设我在远程windows服务器上设置了多个windows用户帐户(例如"account639“、"account729”、"account889“等),并且希望hub分别连接到每个帐户并执行Java代码
我的问题是:我如何指定代码应该在网格服务器中的哪个windows用户帐户上执行?
据我所知,我可以添加到RemoteWebDriver的两个参数是远程服务器的主机名(或IP)和端口。我没有看到任何选项来指定它应该在哪个windows用户帐户下运行。
由于远程服务器下的所有windows用户帐户的主机名(IP)都是相同的,我如何告诉“集线器”每次在不同的windows用户帐户下执行这段代码?
我看到的唯一的可能性是在不同的端口下运行Selenium Grid的每个实例,并使用端口号作为区分两个windows用户帐户的一种方式(并确保我同时登录到这两个用户帐户)。
例如,我可以在"account639“上设置Selenium Grid来侦听端口6399,在"account729”上设置侦听端口"7299“-这样我就知道代码是在适当的windows帐户下执行的。
这可行吗?有没有一种不使用端口就能做到这一点的更直接的方法(即,是否可以像我指定端口那样指定集线器应该连接到哪个windows用户帐户?)
发布于 2015-04-14 16:27:55
以每个windows用户登录,在不同端口(例如: 5555、5556、5557)的每个帐号下运行selenium节点。如果每个节点都有相同的设置,我指的是相同的浏览器、相同的浏览器版本等。您可以使用"applicationName",这是一种受支持但未记录在案的额外功能。使用此功能,您可以区分您的节点。例如,在您的nodeConfig中:
...
{
"applicationName":"account639",
"platform":"WINDOWS",
"browserName":"chrome",
"maxInstances":5,
"version":"40",
"seleniumProtocol":"WebDriver"
},
...之后,您可以设置RemoteWebDriver在属于特定窗口用户帐户的特定节点上运行测试。例如:
DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability("applicationName", "account639");
...
WebDriver driver = new RemoteWebDriver(new URL(this.getHubUrl()), dc);如果您想使用更多额外的功能,您可以创建自己的自定义功能匹配器(在Google:"selenium grid custom capability Matcher“中搜索),但如果您只需要一个额外的功能,我建议您使用上面提到的功能。
希望这能有所帮助。
发布于 2015-04-14 06:36:45
在Selenium Grid中,这在技术上是不可能的。但是,您可以创建包装selenium网格的windows服务。
一旦安装了windows服务,您就可以选择希望该服务以谁的身份运行。
这里有一篇关于如何以帐户身份运行windows服务的文章:https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/sys_srv_logon_user.mspx?mfr=true
我猜你可以通过以不同的用户在不同的端口上安装多个windows服务来实现你想要的。
https://stackoverflow.com/questions/29595466
复制相似问题