gpt4 book ai didi

c# - 如何在 Azure 开发测试实验室中部署 Selenium Grid

转载 作者:行者123 更新时间:2023-11-30 12:20:52 25 4
gpt4 key购买 nike

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

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

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

我启动了虚拟机(集线器和节点)。并在每个虚拟机中手动下载 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/

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

所以我在azure论坛中搜索来解决这个问题。我发现我必须添加工件。因此,在 Azure 中,我访问了我创建的开发测试实验室资源,查找每个虚拟机并检查工件。在本例中:管理工件部分。在这里,我发现 Selenium-grid hub 和 Selenium-grid node 在实现消息中显示错误。 enter image description here

中心:

The resource operation completed with terminal provisioning state 'Failed'. VM has reported a failure when processing extension 'customScriptArtifact-183362431'. Error message: "Finished executing command".

扩展消息:

Executing script GridDeployer.ps1

Parameters ---------- Role: hub ConfigFile: testhub SeleniumGridJarFile: https://seleniumserverstandalonejardow

SeleniumGridJarFileName: s4o9Vx Successfully downloaded the SeleniumGrid jar file from https://seleniumserverstandalonejardownload. Invoke-WebRequest : The remote name could not be resolved: 'testhub' At C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.9\Downloads\2\ PublicRepo\master\b8dcb684950157e2f6c44e9774ad70f0b27443d3\Artifacts\windows-se leniumgrid-hub\scripts\GridDeployer.ps1:58 char:5 + Invoke-WebRequest -Uri $configFile -OutFile "$PWD\$configFileName" + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:Htt pWebRequest) [Invoke-WebRequest], WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShe
ll.Commands.InvokeWebRequestCommand

所以我现在不知道我应该做什么。救命!

PS。我已经在本地计算机中使用了这些节点和集线器配置,并且效果非常好,但问题是当我想使用 azure 虚拟机执行它时

最佳答案

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

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

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

  1. 转到具有高级安全性的 Windows 防火墙
  2. 点击Windows 防火墙属性
  3. 私有(private)和公共(public)配置文件上,我将防火墙的状态更改为关闭。
  4. 点击应用确定

然后,对于Hub配置,您可以编写一个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 因为它是公共(public)的。

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

我希望这也适合你!

关于c# - 如何在 Azure 开发测试实验室中部署 Selenium Grid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49374254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com