Ответ 1
Вы можете попробовать следующее:
IWebElement dropDownListBox = driver.findElement(By.Id("selection"));
SelectElement clickThis = new SelectElement(dropDownListBox);
clickThis.SelectByText("Germany");
Если я хочу выбрать вариант раскрывающегося списка, есть несколько способов сделать это. Я всегда использовал:
driver.findElement(By.id("selection")).sendKeys("Germany");
Но это не срабатывало каждый раз. Иногда выбирался другой вариант. Поэтому я немного искал Google и нашел этот кусок кода, который работает каждый раз:
WebElement select = driver.findElement(By.id("selection"));
List<WebElement> options = select.findElements(By.tagName("option"));
for (WebElement option : options) {
if("Germany".equals(option.getText()))
option.click();
}
Но это работает очень медленно. Если у меня есть длинный список со многими элементами в нем, это занимает слишком много времени. Итак, мой вопрос: есть ли решение, которое работает каждый раз и быстро?
Вы можете попробовать следующее:
IWebElement dropDownListBox = driver.findElement(By.Id("selection"));
SelectElement clickThis = new SelectElement(dropDownListBox);
clickThis.SelectByText("Germany");
Попробуйте следующее:
import org.openqa.selenium.support.ui.Select;
Select droplist = new Select(driver.findElement(By.Id("selection")));
droplist.selectByVisibleText("Germany");
Попробуйте выбрать вспомогательный класс Select и посмотрите, не имеет значения?
String valueToSelect= "Germany";
WebElement select = driver.findElement(By.id("selection"));
Select dropDown = new Select(select);
String selected = dropDown.getFirstSelectedOption().getText();
if(selected.equals(valueToSelect)) {//do stuff already selected}
List<WebElement> Options = dropDown.getOptions();
for(WebElement option:Options){
if(option.getText().equals(valueToSelect)){
option.click();
}
}
По какой-то странной причине SelectElement
для webdriver (версия 2.25.1.0) неправильно работает с firefoxdriver (Firefox 15). Иногда он не может выбрать параметр из выпадающего списка. Однако он работает с хромированным рекордером... Это - ссылка на хромированный реверс... просто отбросьте его в bin dir.
Мне нужно изо всех сил пытаться найти, как достичь особенных тех, кто не знаком с этим инструментом (например, я)
Код С#:
IWebElement ddl = ffDriver.FindElement(By.Id("ddlGoTo"));
OpenQA.Selenium.Support.UI.SelectElement clickthis = new OpenQA.Selenium.Support.UI.SelectElement(ddl);
clickthis.SelectByText("Your Text");
надеюсь, что это поможет другим!
public static void mulptiTransfer(WebDriver driver, By dropdownID, String text, By to)
{
String valuetext = null;
WebElement element = locateElement(driver, dropdownID, 10);
Select select = new Select(element);
List<WebElement> options = element.findElements(By.tagName("option"));
for (WebElement value: options)
{
valuetext = value.getText();
if (valuetext.equalsIgnoreCase(text))
{
try
{
select.selectByVisibleText(valuetext);
locateElement(driver, to, 5).click();
break;
}
catch (Exception e)
{
System.out.println(valuetext + "Value not found in Dropdown to Select");
}
}
}
}
select = driver.FindElement(By.CssSelector("select[uniq id']"));
selectElement = new SelectElement(select);
var optionList =
driver.FindElements(By.CssSelector("select[uniq id']>option"));
selectElement.SelectByText(optionList[GenerateRandomNumber(1, optionList.Count())].Text);
Пример выбора опции из выпадающего списка:
Нажмите на раскрывающийся список, используя id или csspath или xpath или имя. Я использовал id здесь.
driver.findElement(By.id("dropdownlistone")).click(); // To click on drop down list
driver.findElement(By.linkText("india")).click(); // To select a data from the drop down list.
Просто оберните свой WebElement в Select Object, как показано ниже.
Select dropdown = new Select(driver.findElement(By.id("identifier")));
Как только это будет сделано, вы можете выбрать требуемое значение тремя способами. Рассмотрим HTML файл, подобный этому
<html>
<body>
<select id = "designation">
<option value = "MD">MD</option>
<option value = "prog"> Programmer </option>
<option value = "CEO"> CEO </option>
</option>
</select>
<body>
</html>
Теперь для определения раскрывающегося списка
Select dropdown = new Select(driver.findElement(By.id("designation")));
Чтобы выбрать свой вариант, скажите "Программист", вы можете сделать
dropdown.selectByVisibleText("Programmer ");
или
dropdown.selectByIndex(1);
или
dropdown.selectByValue("prog");
Счастливое кодирование:)
Вы можете использовать этот
(new SelectElement(driver.FindElement(By.Id(""))).SelectByText("");