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

Selenium网格:节点API?

宋航
2023-03-14

问题:

我想在AWS上运行Selenium Grid,并希望使用他们的动态扩展。缩小规模,它只会终止一个实例...这意味着一个节点可以就这样消失。不是我想要的行为,但使用脚本或生命周期挂钩,我可以尝试确保节点上的任何会话在终止之前都不是活动的。

似乎我可以点击这个API来断开节点与集线器的连接:http://NODE-IP:5555/selenium-服务器/驱动程序/?cmd=关闭SeleniumServer

理想情况下,我需要找到一个直接连接到节点的API来收集会话活动的数据。

选择?会话日志?

共有1个答案

斜淳
2023-03-14

注意:此答案仅适用于Selenium 3. x系列(3.14.1是Selenium 3系列中的最后一个版本)。Selenium 4网格架构完全不同,因此此答案不一定与Selenium 4网格相关(尚未发布)。

两件事。你想要的听起来像是你需要一种自愈机制。这在普通香草硒网格口味中不可用。

Selenium节点不具备跟踪其中运行的会话的功能。

您需要在Selenium Hub(这是所有信息所在的地方)构建所有这些。

从较高的层次上讲,您需要执行以下操作

  1. 通过扩展org.openqa.grid.selenium.proxy来构建自定义代理。DefaultRemoteProxy具有以下功能:
    1. 添加一个API,该API在使用时会将代理标记为静止(意味着节点已被标记为维护,并且不再接受任何新的会话请求)
    2. 覆盖getNewSession(映射
    1. 给定一个节点,它可以使用通过1.1构建的API,并将节点标记为静止
    List<RemoteProxy> freeProxies =
        StreamSupport.stream(getRegistry().getAllProxies().spliterator(), false)
            .filter(remoteProxy -> !remoteProxy.isBusy())
            .collect(Collectors.toList());
    List<URL> urls =
        freeProxies.stream().map(RemoteProxy::getRemoteHost).collect(Collectors.toList());
    

    现在我们有了自定义集线器,该集线器现在已经启用了执行此清理的功能,您现在可以首先调用2.1endpoint来标记要关闭的节点,然后继续轮询2.2endpoint以检索不再支持任何测试会话的节点的所有IP和端口组合,然后调用http://NODE-IP:5555/selenium-服务器/驱动程序/?cmd=shutDownSeleniumServer。

    在高水平上可以做你想要的事情。

    一些有用的链接可以帮助你了解这一点(所有提供的链接都是我在不同时间点写的博客)。

    1. 自愈网格-https://rationaleemotions.wordpress.com/2013/01/28/building-a-self-maintaining-grid-environment/
    2. 生成自定义代理-https://rationaleemotions.github.io/gridopadesham/CUSTOM_PROXY.html
    3. 为中心构建自定义servlet-https://rationaleemotions.github.io/gridopadesham/CUSTOM_SERVLETS.html

 类似资料:
  • null V: BrowserTimeout:0 调试:false DownPollingLimit:2 集线器:http://jenkins主机:jenkins端口 ID:http://node ip:node端口 null 异常的第一行说它无法解析某些东西,但我不能理解什么? 我是不是漏掉了什么?我是第一次做网格设置。

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

  • 我有以下问题 我成功启动了Selenium Grid hub: java-jar selenium-server-standalone-2.53.0.jar-角色中心 之后,我尝试使用以下命令启动PhantomJS节点: 但出现错误: [信息-2016-03-25T13:56:28.397Z]GhostDriver-Main-在8090端口上运行[信息-2016-03-25T13:56:28.39

  • 当selenium节点空闲时,有什么方法可以触发. bat脚本吗? 我有一个硒网格设置,由单独机器上的一个集线器和三个节点组成。我试图做的是有一个脚本,在执行测试套件后清理每个节点上的测试环境。由于可能有其他测试套件直接在另一个之后启动,我需要在节点空闲几秒钟时触发脚本。 脚本本身相对较快,运行大约需要1-2秒。我如何在适当的时候触发它?

  • 我正在努力添加一个具有许多并发PhantomJS实例的节点。在GhostDriver github页面上,您可以找到将一个节点仅注册一个PhantomJS实例的说明: 以下是配置选项卡内容: 由于selenium网格允许从命令行定义节点浏览器,我尝试使用phantomjs这样做,但正如您在此处看到的那样,它不受支持。 -浏览器允许的参数:浏览器名称={android、chrome、Firefox、

  • 我是Selenium网格的新手,因此在这方面的任何帮助都是非常感谢的。 我通过转到/grid/console验证了上述内容,可以看到节点已成功注册到端口5556。 现在作为下一步,我正在尝试通过在cmd行中运行以下命令来注册Windows7虚拟机上的另一个节点(ip地址=10.0.0.79): java-jar selenium-server-standalone-2.20.0.jar-role