当前位置: 首页 > 知识库问答 >
问题:

Selenium网格和RemoteWebDriver

谭炎彬
2023-03-14

我有一个用Java编写的应用程序,可以在特定网站上创建电子邮件帐户。由于某些原因,我需要在不同的windows用户帐户下运行程序的每个迭代。

我正在使用SeleniumGrid(RemoteWebDriver)从集线器服务器连接到远程服务器(Grid)。

假设我在远程windows服务器上设置了多个windows用户帐户(如“account639”、“account729”、“account889”等),并且我希望我的集线器分别连接到每个帐户并执行Java代码

我的问题是:如何指定代码应该在网格服务器中的哪个windows用户帐户上执行?

据我所知,我可以添加到RemoteWebDriver的两个参数是远程服务器的主机名(或IP)和端口。我看不到任何选项来指定它应该在哪个windows用户帐户下运行。

由于远程服务器下的所有windows用户帐户的主机名(IP)都相同,我如何告诉“中心”每次在不同的windows用户帐户下执行代码段?

我看到的唯一可能性是在不同的端口下运行Selenium Grid的每个实例,并使用端口号作为区分两个windows用户帐户的方法(并确保我同时登录到两个用户帐户)。

例如,我可以在“account639”上设置Selenium Grid以监听端口6399,在“7299”上设置Selenium Grid以监听端口,这样我就知道代码是在适当的windows帐户下执行的。

这是否可行?有没有一种更直接的方法不使用端口就可以做到这一点(即,是否可以像指定端口一样指定集线器应该连接到哪个windows用户帐户?)

共有2个答案

马梓
2023-03-14

这在技术上是不可能与硒网格。但是,您可以创建一个包装selenium网格的windows服务。

安装windows服务后,您可以选择希望服务作为谁运行。

这里有一篇关于如何将windows服务作为帐户运行的文章:https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/sys_srv_logon_user.mspx?mfr=true

我想你可以通过在不同的端口上安装多个窗口服务来实现你想要的,作为不同的用户。

秋兴思
2023-03-14

与每个windows用户一起登录,并在不同端口上的每个帐户下运行selenium节点(例如:5555565557)。如果每个节点都有相同的设置,我指的是相同的浏览器,相同的浏览器版本,等等。。。您可以使用“applicationName”,这是一种受支持但没有文档记录的额外功能。使用此功能,您可以区分节点。例如,在nodeConfig中:

...
{
    "applicationName":"account639",
    "platform":"WINDOWS",
    "browserName":"chrome",
    "maxInstances":5,
    "version":"40",
    "seleniumProtocol":"WebDriver"
},
...

之后,您可以设置远程WebDriver,以便在属于特定寡妇用户帐户的特定节点上运行测试。例如:

DesiredCapabilities dc = new DesiredCapabilities();
dc.setCapability("applicationName", "account639");
...
WebDriver driver = new RemoteWebDriver(new URL(this.getHubUrl()), dc);

如果您想使用更多的额外功能,您可以创建自己的定制功能匹配器(在Google中搜索:“selenium grid custom capability Matcher”),但如果您只需要一个额外功能,我建议使用前面提到的功能。

希望这能有所帮助。

 类似资料:
  • 问题内容: 我正在设置Selenium Grid服务器,并且已经在本地计算机上成功完成了工作,我想知道如何提供主机名,因此如果其他测试人员想要注册到集线器,他们应该能够做到这一点,这就是我所做的至今: 在我的本地计算机上(假设我将允许其他测试人员在此处注册该节点) 在本地计算机上启动集线器: 启动节点 我查看中心的状态:localhost:4444 / grid / console 现在,我的问题

  • 问题内容: 我想知道是否有人可以阐明一个让我们有些头疼的问题。 我们对Selenium Grid 的和的含义感到困惑。我们认为,这是可以在单个节点上运行的测试会话的总数。而且,我们还认为测试是可以打开的浏览器总数。 还是该节点可用的浏览器总数? 我们使用的命令是: 我们认为(上面)使用节点的方式默认为5个并发测试会话。 每个测试都有20个可用的浏览器吗? 还是每个测试会话与其他测试会话共享一个池中

  • 我可以用硒格的四库里吗?如果远程机器会有sikuli库? 另一件事:我在 http://mvnrepository.com上找不到org.sikuli.script的maven dependecies/还有其他方法可以将jar包含到maven中吗?

  • 问题: 我想在AWS上运行Selenium Grid,并希望使用他们的动态扩展。缩小规模,它只会终止一个实例...这意味着一个节点可以就这样消失。不是我想要的行为,但使用脚本或生命周期挂钩,我可以尝试确保节点上的任何会话在终止之前都不是活动的。 似乎我可以点击这个API来断开节点与集线器的连接:http://NODE-IP:5555/selenium-服务器/驱动程序/?cmd=关闭Seleniu

  • 下面是我的代码,我正在使用它来传递浏览器、节点和枢纽港来启动浏览器并执行测试,但是我得到了异常,尽管我能够设置selenium服务器。我把错误贴在代码下面。我使用mac book、Selenium3.4、Firefox55和Gecko0.18.0 下面是命令提示符中的日志

  • 我正在为我的自动化套件使用Selenium Hub和Node设置。到目前为止,我正在使用以下命令在远程机器上手动启动集线器和节点。 java-jarselenium-server-standalone-3.141.59.jar-角色集线器 java-Dwebdriver.chrome.driver=chromedriver.exe-jarselenium-server-standalone-3.1