Невозможно выбрать опцию в Select with Selenium - PullRequest
0 голосов
/ 24 января 2020

У меня проблема, когда я пытаюсь выбрать опцию в <select> в Selenium.

Select select = new Select(element);
actions.moveToElement(element);
select.selectByValue("100000");

Это просто дает мне ElementClickIntercepted. Попытка нажать на нее также дает мне ElementClickIntercepted. Попытка щелкнуть по нему с помощью JS дает мне NullPointerException. Я могу очень легко выбрать его в Firefox с помощью селектора элементов, так что ничто не находится поверх выбора, что мешает мне щелкнуть по нему.

Что перехватывает щелчок? обычно, когда один элемент перекрывает другой, он сообщит мне в результатах теста, но здесь это не так.

<div class="pull-left">
<select name="nb" class="form-control">
<option value="10">10</option><option value="20">20</option><option value="50">50</option><option value="100000">All</option>
</select>
</div>

Выберите xPath:

//select[@name="nb"]

И это единственный выбор на странице.

Ответы [ 2 ]

2 голосов
/ 24 января 2020

Поскольку элемент является элементом <select>, в идеале вам необходимо использовать Select class. Чтобы вызвать click() для опции со значением 1000 , вам нужно вызвать WebDriverWait для elementToBeClickable(), и вы можете использовать любую из следующих Стратегий локатора :

  • cssSelector:

    new Select(new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("select.form-control[name='nb']")))).selectByValue("100000");
    
  • xpath:

    new Select(new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//select[@class='form-control' and @name='nb']")))).selectByValue("100000");
    
2 голосов
/ 24 января 2020

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

WebDriverWait wait = new WebDriverWait(driver, 40);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//select[@name='nb']")));
Select select = new Select(element);
actions.moveToElement(element);
select.selectByValue("100000");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...