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

如何在Azure DevTestLabs中部署Selenium网格

孔硕
2023-03-14

我正在尝试通过Azure执行远程selenium测试。

为此,我使用https://github.com/Azure/azure-devtestlab/tree/master/samples/DevTestLabs/QuickStartTemplates/201-dtl-create-lab-with-seleniumgrid

我使用selenium服务器独立jar文件创建了一个自定义模板,并安装了Chocolate包,其中包含节点和中心工件。

我启动了虚拟机(中心和节点)。并在每个虚拟机中手动下载java独立jar文件,在命令提示符下,我用正确的命令启动每个虚拟机:

中心:

java -jar selenium-server-standalone-3.11.0.jar -role hub

集线器给了我一个节点连接的IP。(对于这个例子,我将使用:10.0.0.2)

节点

java -Dwebdriver.chrome.driver="C:\tryGrid\chromedriver.exe" -jar selenium-server-standalone-3.11.0.jar -role node -hub http://10.0.0.2:4444/grid/register/

但节点无法连接到集线器。

中心:

以终端配置状态“失败”完成的资源操作。VM在处理扩展“CustScriptartifat-183362431”时报告失败。错误消息:“已完成执行命令”。

扩展消息:

正在执行脚本GridDeployer。ps1

参数-----------角色:中心配置文件:testhub SeleniumGridJarFile:https://seleniumserverstandalonejardow

SeleniumGridJarFileName: s4o9Vx成功从https://seleniumserverlistalonejarinstall下载SeleniumGrid jar文件。Invoke-WebRequest:无法解析远程名称:'testhub'At C:\Packages\Plugins\Microsoft。计算。CustomScriptExtens\1.9\Download\2\PublicRepo\master\b8dcb684950157e2f6c44e9774ad70f0b27443d3\arti事\windows-se leniumgrid-hub\脚本\GridDeployer.ps1:58 char: 5 Invoke-WebRequest-Uri$confiFile-OutFile"$PWD\$confiFileName" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 类别信息:无效操作:(System. Net. HttpWebRequest: Htt pWebRequest)[Invoke-WebRequest], WebException FullyQualifiedErrorId: WebCmdletWeb响应异常,微软。

所以我现在不知道该怎么办。救命。

另外,我在本地机器上使用过这些节点和集线器配置,效果非常好,但问题是当我想用azure虚拟机执行它时

共有1个答案

方波娃
2023-03-14

我找到了这个问题的答案。问题不在门户azure端,而是在我的虚拟机中。

我在github上阅读了很多论坛和问题以及这里的另一个问题。最后我找到了一个关于防火墙问题的。

我刚刚做了什么?在我的虚拟机上,我:

  1. 转到具有高级安全性的Windows防火墙

然后,对于集线器配置,您可以编写一个json文件,并将其保存在与selenium服务器相同的路径中。该文件应包含以下内容:

{
  "host": "85.168.37.178",
  "port": 4444,
  "newSessionWaitTimeout": -1,
  "servlets" : [],
  "prioritizer": null,
  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
  "throwOnCapabilityNotPresent": true,
  "nodePolling": 5000,

  "cleanUpCycle": 5000,
  "timeout": 300000,
  "maxSession": 5
}

我将文件保存为hub。json。你在控制台上写

java -jar selenium-server-standalone-2.6.0.jar -role hub -hubConfig hub.json

对于节点,您还可以编写如下配置文件:

{
  "capabilities":
      [
        {
          "browserName": "firefox",
          "maxInstances": 5
        },
        {
          "browserName": "chrome",
          "maxInstances": 5,
          "seleniumProtocol": "WebDriver"
        },
        {
          "browserName": "internet explorer",
          "maxInstances": 1
        }
      ],
    "proxy": "org.openqa.grid.selenium.proxy.DefaultRemoteProxy",
    "maxSession": 5,
    "port": 5555,
    "register": true,
    "registerCycle": 5000,
    "hub": "http://85.168.37.178:4444/",
    "nodeStatusCheckTimeout": 5000,
    "nodePolling": 5000,
    "role": "node",
    "unregisterIfStillDownAfter": 60000,
    "downPollingLimit": 2,
    "debug": false,
    "servlets" : [],
    "withoutServlets": [],
    "custom": {}
}

最后,在您的程序中您可以编写IP或DNS,我采用DNS是因为是公共的。

ChromeOptions options = new ChromeOptions();
options.AddArgument("--start-maximized");
RemoteWebDriver(new Uri("http://myvirtualmachinename.server.cloudapp.azure.com:4444/wd/hub"), options.ToCapabilities());

我希望这对你也有用!

 类似资料:
  • 使用我们提供的 yapi-cli 工具,部署 YApi 平台是非常容易的。建议部署成 http 站点,因 chrome 浏览器安全限制,部署成 https 会导致测试功能在请求 http 站点时文件上传功能异常。 如果您是将服务器代理到 nginx 服务器,请配置 nginx 支持 websocket。 在location /添加 proxy_http_version 1.1; proxy_s

  • 问题内容: 我正在使用Eclipse服务器功能进行热代码部署。使用tomcat作为Web服务器。但是我不确定它是如何工作的。我有自己的理解,它必须如何在内部工作。 我的理解:- 当开发人员更改代码(例如,类Employee)时,Eclipse将在正确的位置(必须是特定的Web /应用服务器,将其称为热部署目录(HDD))放置/发布修改后的已编译类。 。现在将显示Web服务器特定的类加载器。它在HD

  • 根据和代码/系统的紧密程度,我们可以简单地把部署分为应用级和系统级。 应用级通常提供把 HTTP 请求递交给应用,而系统级和运维的关系更为紧密。 下面是一个非常常见的 Python 应用部署架构: nginx :静态文件服务;SSL 负载转移;反向代理; Memcached / Redis :缓存; Celery :运行后台任务; Redis / RabbitMQ :任务队列(通常对接 Celer

  • kubernetes 要求集群内各节点能通过 Pod 网段互联互通,本文档介绍使用 Flannel 在所有节点 (Master、Node) 上创建互联互通的 Pod 网段的步骤。 使用的变量 本文档用到的变量定义如下: $ export NODE_IP=10.64.3.7 # 当前部署节点的 IP $ # 导入用到的其它全局变量:ETCD_ENDPOINTS、FLANNEL_ETCD_PREFIX

  • 我有一个Spring-boot gradle应用程序,它没有任何web页面。这个应用程序有REST API,当我作为Spring boot应用程序运行时,它成功地被调用。 现在,在gradle的generation war之后,当我试图将它部署在apache-tomcat-8.0.35中时,它得到了部署,目录结构如下所示:- 但是现在我不能用tomcat端口8080访问我的REST api。我已经

  • 我正在开发一个基于nodejs和postgresql的corona病毒项目。我正在尝试在heroku上部署我的应用程序,但我遇到了一些问题。这些问题来自postgres配置(我认为)。 我有一个. env文件,其中我初始化了一些变量(DATABASE_URL,...),但我不知道如何将它们传输到heroku。我关联了一个插件postgres-heroku,它会生成一个具有随机值的DATABASE_