Я загрузил драйверы С# и IDE. Мне удалось записать некоторые тесты и успешно запустить их из среды IDE. Но теперь я хочу сделать это с помощью С#. Я добавил в проект все соответствующие DLL (Firefox), но у меня нет класса Selenium
. Некоторый мир привет будет приятным.
Как использовать Selenium в С#?
Ответ 1
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();
}
}
Ответ 2
- Установить пакетный менеджер Nuget
Ссылка для скачивания: https://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c - Создание визуального консольного приложения С#
- Щелкните правой кнопкой мыши по проекту → Управление пакетами Nuget.
Найдите "Selenium" и установите пакетSelenium.Support
Готово теперь вы готовы написать свой код:)
Для кода с загрузкой IE ie driver
Ссылка: 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/
MY Пример кода:
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");
}
}
}
}
Ответ 3
Чтобы настроить ide для селена в сочетании с С#, нужно использовать visual studio express. И вы можете использовать nUnit в качестве основы тестирования. Ниже ссылки предоставляют вам более подробную информацию. Кажется, у вас есть настройка того, что объясняется в первой ссылке. Поэтому проверьте вторую ссылку для получения дополнительной информации о том, как создать базовый script
Как настроить клиентские драйверы С#, nUnit и selenium на VSExpress для автоматизированных тестов
Создание основного тестового примера веб-драйвера Selenium с использованием Nunit и С#
Пример кода из приведенного выше блога
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();
)
}
}
Ответ 4
Я знаю, что это более старый вопрос, но я думал, что буду размещать эту информацию там для других.
Одна из вещей, которые мне трудно найти, - это использование PageFactory в С#. Особенно для нескольких 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, потому что:
- Мне никогда не нужно вызывать драйвер напрямую с помощью driver.FindElement(By.Id( "id" ))
- Объекты lazy initialized
Я использую это, чтобы написать собственное ожидание методов элементов, обертки WebElements, чтобы получить доступ только к тем, что мне нужно, чтобы показать тестовые скрипты, и помогает поддерживать чистоту.
Это облегчает жизнь, если у вас есть динамические (автоматизированные) веб-элементы, такие как списки данных. Вы просто создаете обертку, которая будет принимать IWebElements и добавлять методы, чтобы найти элемент, который вы ищете.
Ответ 5
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);
Ответ 6
С#
- Прежде всего загрузите Selenium IDE для Firefox из Selenium IDE. Используйте и играйте с ним, затем проверьте сценарий, запишите шаги и затем экспортируйте его на С# или проект 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;
}
}
}
}
- Вам нужно получить драйвер chrome из здесь
- Вам нужно получить пакеты самородок и необходимые DLL для веб-сайта selenium nuget.
- Вам нужно понять основы Selenium с сайта selenium docs.
Что все...
Ответ 7
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();
}
}
Ответ 8
Используйте приведенный ниже код, как только вы добавили все необходимые библиотеки С# в проект в ссылках.
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();
}
}
}