问题标签 [selenium-grid2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
capybara - 获取远程浏览器的水豚会话
我找不到任何显示传递功能和创建远程会话的正确方法的东西。类似于下面的东西
谁能指出我如何做到这一点的正确方向?我已经看到了很多关于如何注册这样的遥控器的示例https://blog.testingbot.com/2012/02/19/selenium-cucumber-capybara,但没有任何东西可以获取它的实例,以便我可以对其采取行动在代码中。
selenium - Selenium Grid 是否在连接后移交节点?
来自 Selenium 测试(客户端)的所有连接都应该直接转到 Selenium HUB,然后它将请求转发到适当的节点,并返回响应。
但我观察到的是,在找到合适的节点后,客户端正试图直接与节点通信。
但是,如果节点位于专用网络中,并且只能由 Selenium HUB 访问,而不能由 Selenium 测试(客户端)访问,那么后续调用将失败。
关于如何仅通过 Selenium HUB 强制所有后续调用的任何想法?
编辑
问题可能有所不同。我的集线器在 192.168.0.100 上运行(另一个 ip 为 10.0.0.2)。
因此,当我从我的 .Net RemoteWebDriverClient 连接到 192.168.0.100 时,在连接到适当的节点后,它正在使用我的系统无法访问的客户端的另一个 ip(10.0.0.2)。
selenium-webdriver - 在 Selenium Grid 上运行 chrome 浏览器时面临的问题
我可以在 Selenium Grid 上的 firefox 浏览器上运行我的测试用例,但是在 Chrome 浏览器上运行测试时遇到问题,这似乎是一种配置问题。
运行测试时出现以下错误:-
我正在使用以下命令运行我的节点:-
下面是我的 nodeconfig.json
我还使用命令添加了二进制路径:-
有人可以建议我做错了什么吗?
java - Selenium:在不同的浏览器上运行相同的测试
我想在不同的浏览器(Firefox、Chrome 和 Safari)上运行相同的测试。为此,我在测试中使用参数化。如果浏览器是 chrome,则在哪里运行 chrome 等等。
在testng.xml
我已经指定并行运行测试并在多个<test>
标签下重复相同的测试。
如果我有这么多测试要运行怎么办。我将在<test>
标签中复制粘贴相同的测试。哪个没有看到最佳解决方案。
我怎样才能解决这个问题?
这是我尝试过的:
c# - 以编程方式在远程机器上启动 selenium 集线器
我们如何以编程方式在远程机器上启动 selenium 网格集线器?
截至目前,我知道以下方法,但我对此有一些疑问。
方法 1:在远程机器上使用所需的命令(java -jar selenium-server-standalone-2.14.0.jar -role hub)执行批处理文件以启动集线器。(使用 PSExec 在远程机器上执行命令)
上述方法没有问题和问题。但正在寻找一种 API 方式来做到这一点。
方法 2:这种方法(我没有尝试这种方法,因为这些是 JAVA API,而且我对 JAVA 知之甚少)。
Q1:我们可以使用上述方法在远程机器上启动集线器吗?
Q2:这种方法是否需要 selenium 服务器 jar 文件?
我们可以在我们的程序中使用这些API(一些如何使用JSON中的所需配置发出 POST 或 GET http 请求)在远程机器上配置 Hub 并启动它吗?(我知道将这些 API 与 selenium 服务器 jar 文件一起使用的控制台方式)
linux - 如果节点在启动时从 shell 脚本启动,则 Chrome 或 Firefox 无法在 selenium 节点计算机上启动
我有一个 shell 脚本可以在启动时将节点机器注册到集线器。
该脚本包含:
java -jar ~/selenium/selenium-server.jar -role node -hub http://HUB_IP:4444/grid/register -browser browserName="firefox",maxInstances=5,Platform="LINUX",applicationName="VM_NAME " -browser browserName="chrome",maxInstances=5,Platform="LINUX",applicationName="VM_NAME" -Dwebdriver.chrome.driver=~/selenium/chromedriver
该脚本在启动时启动良好,甚至节点也注册到集线器,但是,当我从 Jenkins 开始工作时,它会在 Firefox 的情况下给出以下错误:
配置失败:@BeforeClass setup org.openqa.selenium.WebDriverException:45000 毫秒后无法连接到端口 7055 上的主机 127.0.0.1。Firefox 控制台输出:错误:未指定显示
当我从 Jenkins 开始工作时,如果使用 Chrome,则会出现以下错误:
配置失败:@BeforeClass setup org.openqa.selenium.WebDriverException:未知错误:Chrome 无法启动:异常退出(驱动程序信息:chromedriver=2.20.353124(035346203162d32c80f1dce587c8154a1efa0c3b),平台=Linux 3.13.0-68-generic x86_64)警告:服务器未提供任何堆栈跟踪信息)
注意:1.使用更高版本的chrome,firefox和Selenium jar文件2.手动运行脚本时,一切正常。3.在windows中启动批处理文件工作正常,没有任何问题。
c# - Selenium GRID 2 + NUnit 3 选项可并行运行测试
我决定从当前的解决方案(几年前我们团队使用NDistribUnit修改过的 NUnit,它在 VirtualMachines 上运行测试,然后在集线器服务器上收集结果)切换到 Selenium Grid 2。
已尝试使用 ParallelizableAttribute 选项。不幸的是,我注意到 IWebDriver 存储在全局变量(puhh)中。这导致测试启动多个浏览器实例,但测试使用单个 IWebDriver -> 测试执行发生在单个浏览器中 -> 测试在单个进程下运行,但具有多个“工作”线程。尝试使用 2 个虚拟机作为“节点”,将本地 PC 作为集线器。
我知道最好的解决方案是更改无效的想法以将驱动程序存储在全局变量中,但这会花费太多时间:要更新 3k+ 繁重的 UI 测试;许多静态方法也期望将驱动程序作为全局变量进行更新。
NUnit 3.0 还提供了并行运行多个程序集的选项。运行多个测试项目很好,但目前我们每个应用程序有 1 个程序集。并行运行一个应用程序(一个程序集)的测试会很好。
还有其他方法可以在这里使用 GRID + NUnit 3 来使其工作吗?
最后,重构了现有的解决方案:现在执行期间的每个测试都有自己的驱动程序。由于这种变化,很多代码被重写(似乎有太多的方法期望将 IwebDriver 作为全局变量)
c# - 如何在远程机器上打开浏览器的选项卡
场景:我已经配置了Grid 2,多个测试现在并行运行。当测试开始时,会打开浏览器窗口(仅打开一个选项卡)并在其中填充一些控件。之后,我打开另一个选项卡(在同一个浏览器窗口中),切换到它并在其中填充一些控件。
在第二个选项卡中填充数据之前,需要完成以下步骤:
1.通过调用打开新选项卡SendKeys(Keys.Ctrl + 't')
2.在切换到第二个选项卡之前,等待第二个选项卡的句柄添加到驱动程序实例。
3.如果句柄添加到驱动程序实例然后切换到它,否则 4.
4.重复操作 2. 和 3. 直到超时。
问题:
调试时我注意到打开一个新选项卡时,它的句柄没有添加到driver.WindowHandles
. 这意味着,如果不检查是否添加了句柄并尝试切换到它,则会引发异常。在我的情况下,它会在我调用时切换到不正确的选项卡driver.SwitchTo().Window(handles[handles.Count() -1]);
。所以我创建了等待添加句柄的方法。
问题是,当在多个工人中运行时,它总是超时。我改变了timeout
但没有任何改变。新打开的选项卡的句柄不会添加到WindowHandles
. 如果我没有并行运行,那么它会按预期工作。
selenium - Selenium Grid 2 上的数据驱动框架
在我的项目中,我们决定实施 SeleniumGrid
设置。
我们正在使用从Excel
框架驱动的数据,目前所有这些电子表格都存在于工作站中(一旦我们实施,它将变成一个集线器Grid
)。
我想知道在(截至目前为 3 次)Grid
上运行浏览器特定测试运行后,我是否需要将包含数据的电子表格复制到所有?nodes
nodes
c# - 测试完成并关闭浏览器后,Selenium 网格使会话保持活动状态
我是自动化测试和硒网格的新手。我已经能够启动我的集线器并创建运行测试的节点,但是,我在这里碰壁了。在我运行测试并且浏览器关闭后,它使会话保持打开状态,从而使我的下一个测试失败,并且当我查看集线器控制台中的可用实例时,会话保持活动很长时间。如何使会话结束并释放浏览器实例以进行后续测试?