web-dev-qa-db-fra.com

Comment utiliser Selenium en C #?

Sélénium .

J'ai téléchargé les pilotes clients C # et l'EDI. J'ai réussi à enregistrer des tests et à les exécuter avec succès à partir de l'IDE. Mais maintenant, je veux le faire en utilisant C #. J'ai ajouté toutes les DLL pertinentes (Firefox) au projet, mais je n'ai pas la classe Selenium. Un peu de monde serait Nice.

16
Steve Marlusci

À partir de Selenium Documentation :

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. Installer le gestionnaire de paquets Nuget
    Lien de téléchargement: https://visualstudiogallery.msdn.Microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c
  2. Créer une application console Visual C #
  3. Cliquez avec le bouton droit sur le projet -> Gérer les paquets Nuget.
    Recherchez "Selenium" et installez le paquet Selenium.Support

C'est fini, vous êtes prêt à écrire votre code :)

Pour le code avec IE download ie driver
Lien: http://Selenium-release.storage.googleapis.com/index.html
Ouvrez la version 2.45 car il s’agit de la dernière versionDownload IEDriverServer_x64_2.45.0.Zip ou IEDriverServer_Win32_2.45.0.Zip
Extrayez et collez simplement le fichier .exe à n’importe quel emplacement, par exemple C: \
Rappelez-vous le chemin pour une utilisation ultérieure.

OverAll réf lien: http://www.joecolantonio.com/2012/07/31/getting-started-using-Selenium-2-0-webdriver-for-ie-in-visual-studio-c/

MON échantillon de code:

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

Pour configurer ide pour Selenium en conjonction avec c #, utilisez Visual Studio Express. Et vous pouvez nUnit comme cadre de test. Les liens ci-dessous vous fournissent plus de détails. Il semble que vous ayez configuré ce qui est expliqué dans le premier lien. Alors vérifiez le deuxième lien pour plus de détails sur la création d'un script de base

Comment configurer les pilotes clients C #, nUnit et Selenium sur VSExpress for Automated tests

Création d'un scénario de test de pilote Web Selenium de base à l'aide de Nunit et C #

Exemple de code du blog ci-dessus

    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

Je sais que c'est une question plus ancienne, mais je pensais que je mettrais cette information à la disposition des autres.

J'ai eu du mal à trouver comment utiliser PageFactory en C #. Surtout pour plusieurs IWebElements. Si vous souhaitez utiliser PageFactory, voici quelques exemples. Source: PageFactory.cs

Pour déclarer un WebElement HTML, utilisez-le dans le fichier de classe.

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;

N'oubliez pas d'instancier les éléments de la page dans le constructeur.

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

Vous pouvez maintenant accéder à cet élément dans n’importe lequel de vos fichiers ou méthodes. Nous pouvons également utiliser des chemins relatifs à partir de ces éléments si nous le souhaitons. Je préfère pagefactory parce que:

  • Je n'ai jamais besoin d'appeler le pilote directement à l'aide de driver.FindElement (By.Id ("id")) 
  • Les objets sont lazy initialisés

J'utilise cela pour écrire mes propres méthodes d'attente d'éléments, les wrappers WebElements pour accéder uniquement à ce que j'ai besoin d'exposer aux scripts de test, et aide à garder les choses propres.

Cela rend la vie beaucoup plus facile si vous avez des éléments Web dynamiques (à auto-stockage) tels que des listes de données. Vous créez simplement un wrapper qui utilisera IWebElements et ajouterez des méthodes pour trouver l'élément que vous recherchez.

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. Tout d’abord, téléchargez Selenium IDE pour Firefox à partir de Selenium IDE . Utilisez-le et jouez-le, testez un scénario, enregistrez les étapes, puis exportez-le en C # ou en projet Java selon votre condition.

Le fichier de code contient le code quelque chose comme:

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. Vous devez obtenir le pilote chrome à partir de ici
  2. Vous devez obtenir les paquets de nugget et les dll nécessaires pour le site Web de Selenium nuget
  3. Vous devez comprendre les bases du sélénium à partir du site Web de la documentation sur Selenium

C'est tout ...

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

Utilisez le code ci-dessous une fois que vous avez ajouté toutes les bibliothèques C # requises au projet dans les références.

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