Я автоматизирую тест для мобильного сайта , и у меня возникли проблемы с выбором (содержащим список стран).
Меню так:
<select id="depart" name="fromIsoCode" aria-controls="depart" aria-expanded="false">
<option value="xx">yyFullName</option>
<option value="yy">yyFullName</option>
</select>
Важное примечание: Когда меню щелкается и список «виден» для пользователя, атрибут «aria-extended» превращается в «true»
Тест, который я должен сделать, состоит в том, чтобы проверить, что после выбора значения список больше не отображается / не отображается.
Я использовал что-то вместе со следующим кодом для моего теста:
By element = By.cssSelector("select#depart[aria-expanded=\"true\"]")
assertFalse(driver.findElement(element).isDisplayed());
Проблема в том, что даже если элемент не присутствует при достижении этих строк, isDisplayed()
возвращает true
В режиме отладки элемент select#depart[aria-expanded=\"true\"]
НЕ находится в DOM страницы (но select#depart[aria-expanded=\"false\"]
есть)
Результат isDisplayed()
противоположен тому, что я ожидаю:
Для select#depart[aria-expanded=\"true\"]
предполагается, что оно ложно (у меня нет элемента в DOM, но это правда, для select#depart[aria-expanded=\"false\"]
это должно быть верно (оно в DOM), но оно ложно ...
Мое первое предположение состояло в том, что это как-то связано с тем, что мы выбираем что-то ранее, но оказывается, что нет, не получается, даже если проверка - это первое, что я делаю на странице.
Второе предположение заключается в том, что это либо что-то конкретное для выбора элемента, и / или проблема с попыткой использовать select#depart[aria-expanded=\"true\"]
и select#depart[aria-expanded=\"false\"]
в качестве различных элементов, но у меня нет другой идеи, как с этим справиться.
Вопросы:
- Как проверить, расширено ли меню выбора / выпадающего меню селеном / Java?
- Почему это не работает, как ожидалось?
Редактировать 1 03/09/18
Я пытался проверить значение "aria-extended", оно дает тот же результат.
Я вижу это как ложное в DOM, когда предполагается, что оно ложное, но селен становится «истинным», когда смотрит на него в отладке.
Редактировать 2 03/09/18
Отладка Я замечаю следующее: если я "проверяю" мой браузер ДО "просмотра" моей переменной, результат, который я получил в отладке, будет в порядке ...
Отладка приостанавливается -> Я добавляю часы на «aria-extended», они дают «true» (вместо ожидаемого «false») -> Я нажимаю свой браузер / Осматриваю страницу «aria-extended» "false" -> я добавляю вторые часы с тем же элементом или "обновляю" первый, я получил правильное значение в "aria-extended" ("false") ...
Увеличение времени ожидания ничего не дает ... Еще несколько пуль, чтобы попробовать, и я вернусь с дополнительной информацией
Редактировать 3 03/09/18
Проблема была не в состоянии выпадающего меню. И мой путь, и theGuy выполняют работу «Проверьте, не раскрыто ли раскрывающееся меню» (Вопрос 1)
Так как это основной вопрос, я принимаю ответ от парня.
Относительно вопроса 2: Вероятно, это особая проблема, которая заслуживает отдельного вопроса, мне удалось временно обойти ее, отправив «ключ табуляции» в списке выбора. Это исправление "В случае возникновения чрезвычайной ситуации", но я не хочу оставлять весь вопрос в ожидании, и я не хочу позволять людям, по крайней мере, не вести.