在Visual Studio中运行C# Selenium Grid项目

3

我在Visual Studio(控制台应用程序和类库)中实现了Nunit Selenium C# 测试。我的项目是一个控制台应用程序。我使用以下代码启动了Selenium Grid:

java -Dwebdriver.gecko.driver="..\jar\geckodriver.exe" -Dwebdriver.chrome.driver="..\jar\chromedriver.exe" -Dwebdriver.ie.driver="..\jar\IEDriverServer.exe" -jar ..\jar\selenium-server-standalone-3.14.0.jar -role hub -port 4444 

代码:

using Automation_Framework.Manager;
using NUnit.Framework;
using OpenQA.Selenium;
using System;
using System.Collections.Generic;
using System.Text;

namespace Automation_Framework.TestManager
{
    [TestFixture]
    class ChromeTestManager
    {
        private WebDriverManager webDriverManager;
        private IWebDriver driver;

        public ChromeTestManager()
        {
            webDriverManager = new WebDriverManager();
        }

        [SetUp]
        public void setup()
        {
            webDriverManager.createDriver("chrome");
            driver = webDriverManager.getDriver();
        }

        [Test]
        public void test()
        {
            driver.Url = "http://www.google.com.my";
            driver.Navigate();
        }

        [TearDown]
        public void shutdown()
        {
            driver.Close();
        }


    }
}

我尝试使用测试资源管理器执行,但没有打开任何浏览器。我正在按照这个教程进行。

问题:

  1. 如何运行项目并打开浏览器以查看所有操作?
  2. 如何使用 Nunit-console-runner 运行?

请帮忙,谢谢。


请帮帮我,这很紧急。 - nicholas
你真的需要WebDriverManager吗?尝试仅使用与你所遵循的教程中完全相同的IWebDriver驱动程序。 - leosteffen
@nicholas,只有TestProject没有按预期工作吗?MainProject也没有“打开任何浏览器”吗? - Clint
2个回答

1
我假设: 1. 您已经在本地尝试过您的代码,并且当您在没有网格的情况下在计算机上运行它时,测试可以打开浏览器。 2. 您的节点已设置并已向中心注册。
您需要: 1. 使用RemoteWebDriver:
var uri = 'uri_to_your_grid_hub';
var capabilities =  new ChromeOptions().ToCapabilities();
var commandTimeout = TimeSpan.FromMinutes(5);
var driver = new RemoteWebDriver(new Uri(uri),capabilities,commandTimeout)
  1. 在类中添加属性:[Parallelizable(ParallelScope.Self)],以便与其他测试类并行运行测试。
  2. 为了验证 hub 是否正在运行,请打开浏览器并导航到 http://localhost:4444 在 hub 机器上。

来源:

如何在 NUnit(Selenium Grid)中并行运行测试?
C# 中的 Selenium Grid
有用的 C# WebDriver 示例
Selenium Grid 设置


0

我没有在 .Net 中使用过网格,但是这是我的答案:

  • 您的命令只是注册一个需要持续运行(打开浏览器并测试它是否正常工作)的中心节点。
  • 您需要在该中心节点下注册您的节点(不同的端口)(打开浏览器并测试它是否正常工作)。

  • 在您的代码中,您应该使用“RemoteWebDriver”连接到中心节点。以下是一些示例代码(它是用Java编写的,但我希望它能为您提供一个起点)

    public class Gmail 
    {
       public WebDriver driver=null;    
       @Parameters("browser") //testng.xml
       @Test()
       public void GmailTest(String browser) 
       {
          System.out.println("Gmail " + browser);
          // RemoteWebdriver
          DesiredCapabilities cap = null;
    
          if(browser.equals("firefox")){
            cap = DesiredCapabilities.firefox();
            cap.setBrowserName("firefox"); 
            cap.setPlatform(Platform.ANY);
          }else if (browser.equals("iexplore")){
            cap = DesiredCapabilities.internetExplorer(); 
            cap.setBrowserName("iexplore");
            cap.setPlatform(Platform.WINDOWS);
          }
          driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),cap);        
          driver.get("http://gmail.com");
          driver.findElement(By.id("Email")).sendKeys("abcd");  
          driver.quit();    
      }
    

希望这能帮到你。祝好运。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接