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.
À 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();
}
}
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");
}
}
}
}
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();
)
}
}
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:
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.
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();
}
}
C #
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;
}
}
}
}
C'est tout ...
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);
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();
}
}
}