Подтвердить что ты не робот

Выберите каждый вариант в раскрывающемся списке, используя Selenium WebDriver С#

Я не могу выбрать параметры в выпадающем списке. Я думаю, мне нужно иметь .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");
}

"select" в "ffbrowser.select" сообщается как ошибка:

Ошибка 1 "OpenQA.Selenium.IWebDriver" не содержит определения для "select" и не используется метод расширения "select" , принимающий первый аргумент типа "OpenQA.Selenium.IWebDriver" (вам не хватает использования директива или ссылка на сборку?)

Мои ссылки на проект включают Selenium.WebDriverBackedSelenium, Thoughtworks.Selenium.Core, WebDriver, WebDriver.Support

и я

using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.Firefox;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Support.UI;
4b9b3361

Ответ 1

В зависимости от того, какую версию Selenium WebDriver вы используете, вы можете использовать класс SelectElement, который будет включен в OpenQA.Selenium.Support.UI.
Например:

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

Если элемент находится в раскрывающемся списке.

Ответ 2

Вот пример, чтобы лучше проиллюстрировать, как получить все элементы в выпадающем списке и выбрать элемент из выпадающего списка.

Пример HTML-кода для выпадающего списка

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

Код ниже получает все элементы из выпадающего списка выше и выбирает пункт "Кофе". Логика кода выглядит следующим образом

Шаг 1. Создайте интерфейс тега веб-элемента Шаг 2. Создайте 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();
        }
    }
}

Ответ 3

Вы также можете использовать:

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

Или:

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

Ответ 4

Используйте следующий простой пример кода:

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());

Ответ 5

Это прекрасно работает...

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

Если элемент находится в раскрывающемся списке.