Selenium在启动时启动新的套接字侦听器

本文关键字:启动 套接字 侦听器 Selenium | 更新日期: 2023-09-27 17:58:40

在使用Selenium为我的C#产品进行自动测试时,我遇到了一些奇怪的错误。我使用firefox来运行测试,但正如您在下面看到的,该产品在chrome上运行(我过去没有遇到过任何问题)。我很确定他们是因为我做了以下观察。

当我打开selenium.bat开始我的自动测试时,它会在端口4444上启动一个SocketListener,正如预期的那样。然而,在整个测试过程中,它会继续在各个端口上打开SocketListeners(当然不是4444)。

这就是我实例化硒的方式

this.Selenium = new Selenium("localhost", 4444, "*chrome", this.url, this.storageLocation);

以下是我观察到Selenium正在启动新的SocketListeners 的一些(但不是全部)点

this.Selenium.Start();
//* ....... *//
this.OpenPageWithRetry(Waits.TestStart, Waits.TestAdditional);
this.Selenium.WaitForPageToLoad(Waits.Default);

以及任何其他时间硒由于某种原因(即它没有找到它想要的元素)而失败。

这造成的问题是,当selenium失败时,不会捕捉到任何错误,并且它在等待条件下(或类似的条件下)无限期地停止,这意味着它永远不会结束。我在一个朋友的电脑上运行过同样的测试(我们一起开发产品),对他来说运行得很好,所以我想不是代码,而是后台运行的其他东西。这是我执行以运行代码的批处理文件,它还打开了命令提示符窗口,在那里我可以查看通过selenium的命令(比如创建新的SocketListener时)

prompt $
cls
NET STOP "SeleniumRC"
"C:'Program Files (x86)'Java'jre7'bin'java.exe" -jar C:'Users'ethorne'Documents'stratus'Stratus.Selenium'selenium-server.jar -trustAllSSLCertificates
pause

edit:我在任何时候都不会启动多个线程,所以在整个测试过程中我不应该看到多个socketListener被启动。

有人能帮我吗?

Selenium在启动时启动新的套接字侦听器

每个WebDriver:Chrome、Selenium和Firefox都从一个随机的本地较高端口号开始,以侦听JSON有线协议。当WebDriver代码向WebDriver实例发送命令时,它们会通过本地端口发送这些命令。即使当Grid启动WebDriver时,我相信后台也会发生同样的事情。因此,看到您启动的每个WebDriver线程的端口启动是正常的。