it-swarm.com.ru

Как мне использовать Selenium в C #?

Селен .

Я скачал клиентские драйверы C # и IDE. Мне удалось записать некоторые тесты и успешно запустить их из IDE. Но теперь я хочу сделать это с помощью C #. Я добавил все соответствующие библиотеки DLL (Firefox) в проект, но у меня нет класса Selenium. Какой-нибудь привет мир был бы славным.

16
Steve Marlusci

Из Селен документации :

using OpenQA.Selenium.Firefox;
using OpenQA.Selenium;

class GoogleSuggest
{
    static void Main(string[] args)
    {
        IWebDriver driver = new FirefoxDriver();

        //Notice navigation is slightly different than the Java version
        //This is because 'get' is a keyword in C#
        driver.Navigate().GoToUrl("http://www.google.com/");
        IWebElement query = driver.FindElement(By.Name("q"));
        query.SendKeys("Cheese");
        System.Console.WriteLine("Page title is: " + driver.Title);
        driver.Quit();
    }
}
30
Nathan DeWitt
  1. Установите менеджер пакетов Nuget
    Ссылка для скачивания: https://visualstudiogallery.msdn.Microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c
  2. Создайте консольное приложение Visual C #
  3. Щелкните правой кнопкой мыши по проекту -> Управление пакетами Nuget.
    Найдите «Selenium» и установите пакет Selenium.Support

Готово, теперь вы готовы написать свой код :)

Для кода с IE скачать т.е. драйвер
Ссылка: http://Selenium-release.storage.googleapis.com/index.html
Откройте 2.45, так как это последняя версия Загрузите IEDriverServer_x64_2.45.0.Zip или IEDriverServer_Win32_2.45.0.Zip
Извлеките и просто вставьте файл .exe в любое место, например C: \
Запомните путь для дальнейшего использования.

Ссылка OverAll: http://www.joecolantonio.com/2012/07/31/getting-started-using-Selenium-2-0-webdriver-for-ie-in-visual-studio-c/

МОЙ образец кода:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using OpenQA.Selenium.IE;

namespace Selenium_HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            IWebDriver driver = new InternetExplorerDriver("C:\\");
            driver.Navigate().GoToUrl("http://108.178.174.137");
            driver.Manage().Window.Maximize();
            driver.FindElement(By.Id("inputName")).SendKeys("apatra");
            driver.FindElement(By.Id("inputPassword")).SendKeys("asd");
            driver.FindElement(By.Name("DoLogin")).Click();

            string output = driver.FindElement( By.XPath(".//*[@id='tab-general']/div/div[2]/div[1]/div[2]/div/strong")).Text;

            if (output != null  )
            {
                Console.WriteLine("Test Passed :) ");
            }
            else
            {
                Console.WriteLine("Test Failed");
            }
        }
    }
}
6
Arnab

Для настройки ide для Selenium в сочетании с c # стоит использовать visual studio express. И вы можете nUnit в качестве основы тестирования. Ниже ссылки предоставят вам более подробную информацию. Кажется, вы настроили то, что объясняется в первой ссылке. Так что проверьте вторую ссылку для более подробной информации о том, как создать базовый скрипт

Как настроить клиентские драйверы C #, nUnit и Selenium на VSExpress для автоматических тестов

Создание базового теста для веб-драйвера Selenium с использованием Nunit и C #

Пример кода из приведенного выше блога

    using System;
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    //Step a
    using OpenQA.Selenium;
    using OpenQA.Selenium.Support;
    using OpenQA.Selenium.Firefox;
    using NUnit.Framework;
    namespace NUnitSelenium
    {
[TestFixture]
public class UnitTest1
{      

    [SetUp]
    public void SetupTest()
    {
    }
    [Test]
    public void Test_OpeningHomePage()
    {
        // Step b - Initiating webdriver
        IWebDriver driver = new FirefoxDriver();
        //Step c : Making driver to navigate
        driver.Navigate().GoToUrl("http://docs.seleniumhq.org/");

        //Step d 
        IWebElement myLink = driver.FindElement(By.LinkText("Download"));
        myLink.Click();

        //Step e
        driver.Quit();

        )
       }
}
3
Sham332

Я знаю, что это более старый вопрос, но я думал, что выложу эту информацию для других.

Одна из вещей, которую мне было трудно найти, это как использовать PageFactory в C #. Особенно для нескольких IWebElements. Если вы хотите использовать PageFactory, вот несколько примеров. Источник: PageFactory.cs

Чтобы объявить HTML-элемент WebElement, используйте его в файле класса.

private const string _ID ="CommonIdinHTML";
[FindsBy(How = How.Id, Using = _ID)]
private IList<IWebElement> _MultipleResultsByID;

private const string _ID2 ="IdOfElement";
[FindsBy(How = How.Id, Using = _ID2)]
private IWebElement _ResultById;

Не забывайте создавать экземпляры элементов объекта страницы внутри конструктора.

public MyClass(){
PageFactory.InitElements(driver, this);
}

Теперь вы можете получить доступ к этому элементу в любом из ваших файлов или методов. Также мы можем взять относительные пути из этих элементов, если захотим. Я предпочитаю pagefactory, потому что:

Я использую это, чтобы написать свои собственные методы ожидания элементов, обертки WebElements для доступа только к тому, что мне нужно предоставить для тестовых сценариев, и помогает содержать вещи в чистоте.

Это значительно упрощает жизнь, если у вас есть динамические (автоматически обновляемые) элементы, такие как списки данных. Вы просто создаете оболочку, которая возьмет IWebElements и добавит методы, чтобы найти элемент, который вы ищете.

2
Tyson
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
using OpenQA.Selenium.Support.UI;
using SeleniumAutomationFramework.CommonMethods;
using System.Text;

[TestClass]
    public class SampleInCSharp
    {

        public static IWebDriver driver = Browser.CreateWebDriver(BrowserType.chrome);

        [TestMethod]
        public void SampleMethodCSharp()
        {


            driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(5));
            driver.Url = "http://www.store.demoqa.com";
            driver.Manage().Window.Maximize();

            driver.FindElement(By.XPath(".//*[@id='account']/a")).Click();
            driver.FindElement(By.Id("log")).SendKeys("kalyan");
            driver.FindElement(By.Id("pwd")).SendKeys("kalyan");
            driver.FindElement(By.Id("login")).Click();

            WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
            IWebElement myDynamicElement = wait.Until<IWebElement>(d => d.FindElement(By.LinkText("Log out")));

            Actions builder = new Actions(driver);
            builder.MoveToElement(driver.FindElement(By.XPath(".//*[@id='menu-item-33']/a"))).Build().Perform();
            driver.FindElement(By.XPath(".//*[@id='menu-item-37']/a")).Click();
            driver.FindElement(By.ClassName("wpsc_buy_button")).Click();
            driver.FindElement(By.XPath(".//*[@id='fancy_notification_content']/a[1]")).Click();
            driver.FindElement(By.Name("quantity")).Clear();
            driver.FindElement(By.Name("quantity")).SendKeys("10");
            driver.FindElement(By.XPath("//*[@id='checkout_page_container']/div[1]/a/span")).Click();
            driver.FindElement(By.ClassName("account_icon")).Click();
            driver.FindElement(By.LinkText("Log out")).Click();
            driver.Close();
        }
}
1
user3568988

C #

  1. Прежде всего, загрузите Selenium IDE для Firefox из Selenium IDE . Используйте и поиграйтесь с ним, затем протестируйте сценарий, запишите шаги и затем экспортируйте его в C # или проект Java. согласно вашему требованию.

Файл кода содержит код что-то вроде:

using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
//add this name space to access WebDriverWait
using OpenQA.Selenium.Support.UI;
namespace MyTest
{
[TestClass]
public class MyTest
{
    public static IWebDriver Driver = null;

    // Use TestInitialize to run code before running each test
    [TestInitialize()]
    public void MyTestInitialize()
    {
        try
        {
            string path = Path.GetFullPath("");         //Copy the chrome driver to the debug folder in the bin or set path accordingly
            Driver = new ChromeDriver(path);
        }
        catch (Exception ex)
        { string error = ex.Message; }
    }

    // Use TestCleanup to run code after each test has run
    [TestCleanup()]
    public void MyCleanup()
    {
        Driver.Quit();
    }

    [TestMethod]
    public void MyTestMethod()
    {
        try
        {
            string url = "http://www.google.com";
            Driver.Navigate().GoToUrl(url);

            IWait<IWebDriver> wait = new WebDriverWait(Driver, TimeSpan.FromSeconds(30.00));                    // Waiter in Selenium
            wait.Until(ExpectedConditions.PresenceOfAllElementsLocatedBy(By.XPath(@"//*[@id='lst - ib']")));

            var txtBox = Driver.FindElement(By.XPath(@"//*[@id='lst - ib']"));
            txtBox.SendKeys("Google Office");
            var btnSearch = Driver.FindElement(By.XPath("//*[@id='tsf']/div[2]/div[3]/center/input[1]"));
            btnSearch.Click();

            System.Threading.Thread.Sleep(5000);

        }
        catch (Exception ex)
        {
            string error = ex.Message;
        }
    }
}
}
  1. Вам нужно получить Chrome драйвер от здесь
  2. Вы должны получить пакеты самородков и необходимые библиотеки для сайта Selenium Nuget
  3. Вы должны понимать основы Selenium с сайта Selenium Docs

Это все ...

1
Mohsin Awan
FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"D:\DownloadeSampleCode\WordpressAutomation\WordpressAutomation\Selenium", "geckodriver.exe");
service.Port = 64444;
service.FirefoxBinaryPath = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
Instance = new FirefoxDriver(service); 
1
ashutosh

Используйте приведенный ниже код, как только вы добавите все необходимые библиотеки C # в проект в ссылках.

using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
namespace SeleniumWithCsharp
{
    class Test
    {
        public IWebDriver driver;


        public void openGoogle()
        {
            // creating Browser Instance
            driver = new FirefoxDriver();
            //Maximizing the Browser
            driver.Manage().Window.Maximize();
            // Opening the URL
            driver.Navigate().GoToUrl("http://google.com");
            driver.FindElement(By.Id("lst-ib")).SendKeys("Hello World");
            driver.FindElement(By.Name("btnG")).Click();
        }

        static void Main()
        {
            Test test = new Test();
            test.openGoogle();
        }

    }
}
0
Venkat-Sadineni