Выберите каждый вариант в раскрывающемся списке, используя 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;
Ответы
Ответ 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);
Если элемент находится в раскрывающемся списке.