Selenium Automation - Как выбрать пункт выпадающего меню из этого списка, не получая ошибку исключения? - PullRequest
1 голос
/ 29 апреля 2019

Я хочу выбрать пункт раскрывающегося меню из раскрывающегося меню на веб-странице:

Выпадающее меню с элементами меню

HTML-код дляраскрывающееся меню

HTML-код для пунктов меню

Я попробовал следующие 3 способа, чтобы выбрать элемент с текстом «Тест» (индекс [1]):

  • Случай 1:
   driver.findElement(By.id("combo-1781-inputEl")).click();

   driver.findElement(By.id("combo-1781-inputEl")).sendKeys("Test");

Ошибка не возникла (тест пройден).Но текст элемента «Тест» не отображался в выбранном поле выпадающего меню.

  • Случай 2:
     driver.findElement(By.id("combo-1781-inputEl")).click();

     Select drp = new Select(driver.findElement(By.id("boundlist-1930-listEl")));
     drp.selectByVisibleText("Test");

org.openqa.selenium.support.ui.UnexpectedTagNameException было сгенерировано.Тест не пройден.

  • Случай 3:
    Select drp = new Select(driver.findElement(By.id("boundlist-1930-listEl")));
    drp.selectByIndex(1);

org.openqa.selenium.support.ui.UnexpectedTagNameException.Тест не пройден.

Ответы [ 2 ]

2 голосов
/ 29 апреля 2019

Вы можете сначала нажать на выпадающий элемент, используя:

driver.findElement(By.id("combo-1781-inputEl")).click();

И затем вы можете нажать на элемент «Тест», используя:

driver.findElement(By.xpath("//div[@id='boundlist-1930-listEl']//li[text()='Test']")).click();

И вы также можете параметризовать«Протестируйте» текст здесь, так что в будущем, если вы захотите щелкнуть по любому другому раскрывающемуся значению, вы можете просто отправить этот текст в xpath и затем щелкнуть его, вы можете сделать это следующим образом:

String text="Test";
driver.findElement(By.xpath("//div[@id='boundlist-1930-listEl']//li[text()="+text+"]")).click();
1 голос
/ 29 апреля 2019

Как видно из вашего кода, элемент с идентификатором boundlist-1930-listEl не является <select> узлом.Вот почему было выброшено UnexpectedTagNameException.

Чтобы выбрать элементы из этого вида раскрывающегося списка, сначала нужно сделать видимым раскрывающийся список, я полагаю, нажав на <input>элемент.Затем вам нужно подождать, пока список не появится, и затем нажать на элемент, который вы хотите выбрать.

Попробуйте это:

WebDriverWait wait = new WebDriverWait(driver,30);

driver.findElement(By.id("combo-1781-inputEl")).click();

wait.until(ExpectedConditions.visibilityOf(driver.findElement(By.cssSelector("div#bounddlist-1930-list > ul"))));

driver.findElement(By.xpath("//div[@id='bounddlist-1930-list']/ul/li[contains(text(),'Test')]")).click();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...