#selenium #selenium-webdriver #automated-tests #radio-button #radio-group
#selenium #selenium-webdriver #автоматизированные тесты #переключатель #радиогруппа
Вопрос:
Пожалуйста, я не знаю почему, но я не могу нажать на этот переключатель.
Я пытаюсь с помощью xpath, css, id… но все работает.
Всегда я получаю сообщение об ошибке: нет такого элемента: невозможно найти элемент
И я добавил явное ожидание, но оно все еще не работает.
Теперь я пытаюсь это сделать, но не работает:
WebElement radio = driver.findElement(By.xpath(«//div[@class=’form-inputs-container’]/ul/li[3]/label»));
radio.click();
Мне нужно щелкнуть по нескольким адресам радио на этом веб-сайте:
https://www.turismocity.com.br/
Не могли бы вы мне помочь, пожалуйста?
Комментарии:
1. можете ли вы предоставить образец html?
Ответ №1:
Похоже, ваш xpath неверен, попробуйте использовать приведенный ниже xpath, он будет работать
//form[@class="tc-form-full-flight"]//label[@for="tt1"]/following-sibling::div
Для первого переключателя: //form[@class="tc-form-full-flight"]//label[@for="tt1"]/following-sibling::div
Для второго переключателя: //form[@class="tc-form-full-flight"]//label[@for="tt2"]/following-sibling::div
Для третьей переключающей кнопки: //form[@class="tc-form-full-flight"]//label[@for="tt3"]/following-sibling::div
Надеюсь, это будет полезно!!!
Комментарии:
1. Мохаммед, у меня это не сработало. Я использовал следующий xpath, и теперь я получил щелчок по радио: //* [@id= ‘flights-tab-container’]/form/div[1]/ul/ li[3]/label . Большое спасибо за вашу помощь!!! Я так благодарен!!!
Ответ №2:
Это должно сработать //input[@id='tt3']
или //input[@value='MultiDestino']
Вы можете оценить xpath в консоли Chrome следующим образом $x("//input[@value='MultiDestino']")
Возвращенный вами xpath пустой []
Комментарии:
1. Радиш, у меня это не сработало. Я использовал следующий xpath, и теперь я получил щелчок по радио: //* [@id= ‘flights-tab-container’]/form/div[1]/ul/ li[3]/label . Большое спасибо за вашу помощь!!! Я так благодарен!!!
Ответ №3:
Неверный локатор. Более того — даже если бы он был действительным, этот способ поиска элементов ненадежен (вы использовали позицию элемента — [3] в случае изменения порядка локатор будет тормозить). Я предлагаю селектор css:
input[value='MultiDestino']
Комментарии:
1. Петр, у меня это не сработало. Я использовал следующий xpath, и теперь я получил щелчок по радио: //* [@id= ‘flights-tab-container’]/form/div[1]/ul/ li[3]/label. Большое спасибо за вашу помощь!!! Я так благодарен!!!
Ответ №4:
Для локаторов вы всегда должны начинать с чего-то, что вряд ли изменится. Обычно это идентификаторы, имена и различные другие пользовательские атрибуты в зависимости от сайта. В случае с этим сайтом у каждой из трех переключателей, на которые вы смотрите, есть идентификатор.
Примечание … иногда сайты / страницы не соблюдают стандарты HTML, которые требуют, чтобы идентификатор был уникальным на странице, поэтому, даже если у нужного вам элемента есть идентификатор, всегда проверяйте, чтобы он был уникальным на странице. В этом случае идентификаторы уникальны.
Чтобы щелкнуть переключатель с несколькими назначениями, вы можете использовать приведенный ниже код.
driver.findElement(By.id("tt3")).click();
В некоторых ваших комментариях похоже, что Selenium может испытывать трудности при нажатии на сам ввод, и МЕТКА работает. Если это так, то вы можете немного изменить локатор и использовать приведенный ниже код
driver.findElement(By.cssSelector("#tt3 label")).click();
В приведенном выше CSS-селекторе # означает идентификатор, а — следующий родственный. Для получения дополнительной информации см. Документы W3C.