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

在C#中使用MbUnit框架和Selenium使用Gallio和powershell与Chrome驱动程序进行并行测试失败-所有测试都失败

余阳秋
2023-03-14

测试解决方案有两个项目——一个测试项目带有测试方法(它继承自一个基类,该基类详细编写了测试步骤),另一个项目是一个类库项目,其中包含常用的方法和测试。

使用此解决方案来测试数据输入页。

问题

当我使用Selenium Grid并行执行测试时,所有测试都会失败——它会打开Chrome浏览器,然后什么都没有。

测试报告说服务器超时了。

当我按顺序运行测试时,它们都通过了(没有Selenium网格)。

我到目前为止所做的:

  1. 使用Selenium Grid 2

1.1. 要启动集线器打开命令窗口(具有管理员访问权限),并在selenium目录中运行以下命令:

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

1.2.打开命令窗口的另一个实例(具有管理员访问权限),并在selenium目录中运行以下命令:

    java -jar selenium-server-standalone-2.5.0.jar -Dwebdriver.chrome.driver=\chromedriver.exe -role wd -hub http://4444/grid/register> 

2.在powershell中运行以下测试:

    PS>run-gallio test.dll

3.使用chrome驱动程序

    DesiredCapabilities capability = DesiredCapabilities.Chrome();
    capability.SetCapability(CapabilityType.BrowserName, "chrome");
    driver = new RemoteWebDriver(capability);

4.在assemblyinfo中的主测试项目中。cs-已添加以下属性:

    [assembly: DegreeOfParallelism(4)]
    [assembly: Parallelizable(TestScope.All)]

5.每个类都有可并行化的属性,每个测试方法都有可并行化的属性。

我试过的一些

>

  • 设置浏览器的二进制位置使用DesiredCap

  • DesiredCapabilities - capabilities.SetCapability("chrome.binary",this.binaryLocation); 
    

    (远程Webdriver Chrome抛出“驱动程序可执行文件路径”错误)这对我不起作用。

    在调用hub命令时如何为chrome构建远程Webdriver中设置chrome驱动程序(这会打开chrome浏览器,但之后不会打开)

    还研究了这个问题:如何使用SeleniumGrid2在一个中心上运行多个浏览器

    也尝试了多线程,但这不起作用(使用ChromeDriver而不是远程WebDriver)。

    我现在犯了一个错误

    Run-Gallio : [failed] Test/AddValue  Set Up
    OpenQA.Selenium.WebDriverException: Unexpected error. System.Net.WebException: Unable to connect to the remote server -
    --> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it 4444
    at System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot, SocketAddress socketAddress)
    at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6,Socket& socket, IPAddress address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception)    
    

    问题可能是什么?

    我可以在Selenium网格中尝试什么?如蒙指导,不胜感激。

    不能从硒或C#切换到其他任何东西。谢谢你。

    编辑:几天后,使用Selenium-server-2.41.0,现在得到以下超时错误消息。

        OpenQA.Selenium.WebDriverException: The HTTP request to the remote WebDriver server for URL http://127.0.0.1:4444/wd/hub/session/fdb51889-b9b7-4e97-beea-44dcf9637b0c/element/0/value timed out after 60 seconds. ---> System.Net.WebException: The operation has timed out  
    

    为chrome DesiredCapabilities=DesiredCapabilities调用remotedriver时增加了超时范围。铬();驱动程序=新的RemoteWebDriver(功能);驾驶员管理()。超时()。隐式等待(TimeSpan.FromSeconds(120));

    这不起作用。有什么建议吗?

    编辑答案:设法解决了这个问题——页面上有错误,由于我这边的网络问题——页面没有完全加载,脚本会搜索元素。修正了这个-谢谢丹尼尔和法伊兹。

  • 共有1个答案

    翟宏放
    2023-03-14

    应该是:

    [assembly: DegreeOfParallelism(2)]
    [assembly:Parallelizable(TestScope.All)]
    

    我在管理最大会话和最大实例时遇到一些问题。因此,在运行节点时,请按照如下所示进行标记。

    java -Dwebdriver.chrome.driver="C:\ChromeDriver\chromedriver.exe" -jar selenium-server-standalone-2.42.2.jar -role node -hub http://localhost:4444/grid/register -port 5555 -browser "browserName=chrome,maxSession=1,maxInstances=1,platform=WINDOWS,ensureCleanSession=true"
    
     类似资料:
    • 我打算使用Spring WebFlux为Spring控制器编写一个单元测试。以下是控制器: 这是底层服务接口: 我不明白怎么了。名为的模板位于下。 谢谢大家的支持!

    • 我正在尝试使用2个xml文件与Maven并行运行我的测试,但似乎不起作用。我已经尝试了Maven留档中的步骤/参数:http://maven.apache.org/surefire/maven-surefire-plugin/examples/testng.html 以下是我的pom.xml文件: 这是功能1.xml文件: 我应该做哪些参数/更改才能使其生效? 谢谢你

    • 我试图在JUnit5测试环境中使用JUnit4。事实上,我已经升级了我的pom来使用更高版本的MOckito和POwerMock。到目前为止,所有测试都基于JUnit4。我将平台和vintage依赖项添加到我的pom.xml中。 更早的pom。xml依赖关系

    • 问题内容: 我有一个包含多个模块的项目。当所有测试通过时,Maven测试将全部运行。 当第一个模块中的测试失败时,maven将不会继续进行下一个项目。我在Surefire设置中将testFailureIgnore设置为true,但这无济于事。 我如何使Maven运行所有测试? 问题答案: 我刚刚找到了“ -fae”参数,该参数使Maven运行所有测试并且不会因失败而停止。

    • 我正在使用C#Selenium进行自动测试,在最新的chromedriver更新89.0.4389.2300之后,Google chrome立即启动并崩溃。最奇怪的是,当我在本地运行它时,一切正常,但我也在使用Azure管道在服务器上运行测试。服务器给了我: OpenQA。硒。WebDriverException:未知错误:Chrome无法启动:崩溃。(未知错误:DevToolsActivePor

    • 我们已经为spark编写了单元测试,在本地模式下有4个线程。 当一个接一个地启动时,例如通过intellij或sbt testOnly,每个测试都运行良好。 当用sbt测试启动时,它们会出现如下错误 我们使用的是一个带有多个子项目的sbt项目,其定义如下: