web-dev-qa-db-ja.com

C#でSeleniumを使用するにはどうすればよいですか?

セレン

C#クライアントドライバーとIDEをダウンロードしました。なんとかテストを記録し、IDEから正常に実行しました。しかし、今はC#を使用してそれを実行したいと思います。関連するすべてのDLL(Firefox)をプロジェクトに追加しましたが、Seleniumクラスがありません。こんにちは世界はニースでしょう。

17
Steve Marlusci

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();
    }
}
31
Nathan DeWitt
  1. Nugetパケットマネージャーをインストールする
    ダウンロードリンク: https://visualstudiogallery.msdn.Microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c
  2. ビジュアルc#コンソールアプリケーションを作成する
  3. プロジェクトを右クリック-> Nugetパッケージの管理。
    「Selenium」を検索して、パッケージをインストールしますSelenium.Support

これでコードを書く準備ができました:)

IEを含むコードの場合、IEドライバをダウンロードします
リンク: http://Selenium-release.storage.googleapis.com/index.html
最新リリースの2.45を開くIEDriverServer_x64_2.45.0.ZipまたはIEDriverServer_Win32_2.45.0.Zipをダウンロード
C:\などの任意の場所にある.exeファイルを抽出して貼り付けます
今後の使用のためにパスを覚えておいてください。

全体の参照リンク: 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");
            }
        }
    }
}
6
Arnab

C#と組み合わせてSeleniumのIDEを設定するには、Visual Studio Expressを使用します。また、テストフレームワークとしてnUnitを使用できます。以下のリンクで詳細を確認できます。最初のリンクで説明されている内容を設定したようです。基本的なスクリプトを作成する方法の詳細については、2番目のリンクを確認してください

自動化されたテスト用にVSExpressでC#、nUnit、Seleniumクライアントドライバーをセットアップする方法

NunitとC#を使用したBasic Selenium Webドライバーテストケースの作成

上記のブログのサンプルコード

    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
Shambu

これは古い質問であることは知っていますが、この情報を他の人に公開したいと思いました。

私が見つけるのに苦労したことの1つは、C#でPageFactoryを使用する方法でした。特に複数のIWebElementの場合。 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);
}

これで、任意のファイルまたはメソッドでその要素にアクセスできます。また、必要に応じて、これらの要素から相対パスを取得することもできます。私はページファクトリーを好みます:

  • Driver.FindElement(By.Id( "id"))を使用してドライバーを直接呼び出す必要はありません
  • オブジェクトは 遅延初期化 です。

これを使用して、独自の要素待機メソッドを作成します。WebElementsラッパーは、テストスクリプトに公開する必要があるものだけにアクセスし、クリーンな状態を維持するのに役立ちます。

これにより、データのリストなどの動的な(自動生成された)Web要素がある場合、作業が非常に簡単になります。 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 Webサイトにナゲットパッケージと必要なDLLを取得する必要があります
  3. Selenium docs WebサイトからSeleniumの基本を理解する必要があります

それで全部です ...

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