Запустите проект Selenium Grid C# в Visual Studio - PullRequest
3 голосов
/ 13 февраля 2020

Я реализовал тестирование Nunit selenium C# в visual studio (Консольное приложение n Библиотека классов). Мой проект в visual studio - это консольное приложение. Я запустил сетку селена, используя

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();
        }


    }
}

Я пытался выполнить с помощью Test Explorer, но он не открывает браузер. Я следую этому учебнику .

Вопросы:

  1. Как запустить проект с открытым браузером и просмотреть все действия?
  2. Как запустить с помощью Nunit-console-runner.

Пожалуйста, помогите мне. Спасибо.

Ответы [ 2 ]

0 голосов
/ 24 февраля 2020

Я предполагаю, что:
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)
Добавьте атрибут в класс: [Parallelizable(ParallelScope.Self)], чтобы запустить ваши тесты параллельно с другими классами тестов. Чтобы проверить, работает ли концентратор, откройте браузер и перейдите к http://localhost: 4444 на компьютере-концентраторе.

Источники:

Как запустить параллельные тесты NUnit (Selenium Grid)?
Селеновая сетка в C#
Полезно C# Примеры WebDriver
Настройка Selenium Grid

0 голосов
/ 22 февраля 2020

Я не использовал grid в. 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();    
      }
    

Я надеюсь, что это помогает. Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...