使用Selenium为我的C#产品进行自动化测试时,我遇到了一些奇怪的错误。我正在使用firefox来运行测试,但正如您在下面看到的那样,该产品在chrome上运行(过去我没有遇到任何问题)。我很确定他们是因为我做了以下观察。
当我打开selenium.bat开始我的自动化测试时,它会按预期在端口4444上启动SocketListener。但是,在整个测试中,它继续在各种端口上打开SocketListeners(当然不是4444)。
这是我实例化selenium的方式
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的命令(比如创建新的SocketListeners时)
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
编辑:我没有在任何时候启动多个线程,所以我不应该在整个测试过程中看到多个socketListener被启动。
任何人都可以帮助我吗?
答案 0 :(得分:0)
每个WebDriver:Chrome,Selenium和Firefox都是从一个随机的本地更高端口号开始,以收听JSON Wire Protocol。当WebDriver代码向webdriver实例发送命令时,它们通过该本地端口发送这些命令。即使Grid启动webdriver实例,我相信在后台也会发生同样的事情。因此,通常会看到您启动的每个WebDriver线程的端口启动。