web-dev-qa-db-ja.com

Selenium WebDriver C#を使用してドロップダウンで各オプションを選択します

ドロップダウンリストでオプションを選択できません。 .SelectまたはSelectElementですが、そのようなオプションはありません。

サンプルコード:

IWebDriver ffbrowser = new FirefoxDriver();
ffbrowser.Navigate().GoToUrl("http://www.Amazon.com/");
ffbrowser.Manage().Window.Maximize();

Thread.Sleep(500);

IWebElement ddl = ffbrowser.FindElement(By.Name("url"));
int numofitems = ddl.FindElements(By.TagName("option")).Count;

for (int i = 1; i < numofitems; i++)
{
    ffbrowser.select("TagName = option", "index = i");
}

「ffbrowser.select」の「select」はエラーとして報告されます。

エラー1 'OpenQA.Selenium.IWebDriver'には 'select'の定義が含まれておらず、タイプ 'OpenQA.Selenium.IWebDriver'の最初の引数を受け入れる拡張メソッド 'select'が見つかりません(usingディレクティブまたはアセンブリ参照?)

私のプロジェクト参照にはSelenium.WebDriverBackedSeleniumThoughtworks.Selenium.CoreWebDriverWebDriver.Support

そして、私が持っています

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Support.UI;
17
Ben Walker

使用しているSelenium WebDriverのバージョンに応じて、OpenQA.Selenium.Support.UIに含まれるSelectElementクラスを使用できます。
例えば:

SelectElement selector = new SelectElement(element);
selector.SelectByIndex(1);

elementはドロップダウンボックスです。

26
Nashibukasan

ドロップダウンリスト内のすべてのアイテムを取得し、ドロップダウンリストからアイテムを選択する方法をよりわかりやすく説明する例を次に示します。

ドロップダウンリストのサンプルHTMLコード

<select>
  <option>Milk</option>
  <option>Coffee</option>
  <option>Tea</option>
</select>

以下のコードは、上のドロップダウンリストからすべてのアイテムを取得し、アイテム「Coffee」を選択します。コードのロジックは次のとおりです。

手順1. Web要素タグのインターフェイスを作成します手順2. Web要素タグのすべての子要素でIListを作成します手順3.ドロップリスト項目「コーヒー」を選択します

using System;
using System.Collections.Generic;
using OpenQA.Selenium;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.Support.UI;

namespace SeleniumTests
{
    class DropDownListSelection
    {
        static void Main(string[] args)
        {
            IWebDriver driver = new FirefoxDriver(); 
            driver.Navigate().GoToUrl("http://DropDownList.html");
            IWebElement element = driver.FindElement(By.XPath("//Select"));
            IList<IWebElement> AllDropDownList =    element.FindElements(By.XPath("//option"));
            int DpListCount = AllDropDownList.Count;
            for (int i = 0; i < DpListCount; i++)
            {
                if (AllDropDownList[i].Text == "Coffee")
                 {
                    AllDropDownList[i].Click();
                 }
            }
            Console.WriteLine(DpListCount);
            Console.ReadLine();
        }
    }
}
1
CheryJose

以下も使用できます。

new SelectElement(driver.FindElement(By.Id("")).SelectByText(""));

または:

new SelectElement(driver.FindElement(By.Id("")).SelectByValue(""));
1
Madhu

以下の簡単なサンプルコードを使用します。

String Input="Value to Select"; 
String xPathVal="@["id=Samplexpath"]"; 
IWebElement TargetElement = driver.FindElement(By.XPath(xPathVal)); 
SelectElement dropdown = new SelectElement(TargetElement); 
dropdown.SelectByText(Input.Trim());
0
Arnab

これは完璧に機能します...

SelectElement selector = new SelectElement(element);
selector.SelectByIndex(1);

要素がドロップダウンボックスであるところ。