Невозможно нажать на радиокнопку

Пожалуйста, я не знаю почему, но я не могу нажать на этот переключатель.

Я пытаюсь использовать 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/

Не могли бы вы мне помочь ?

RadioButton


person Luís Pedro Cruz da Silva    schedule 21.10.2020    source источник
comment
вы можете предоставить образец HTML?   -  person DMart    schedule 21.10.2020


Ответы (4)


Похоже, ваш 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

Надеюсь, это будет полезно !!!

person Mohamed Sulaimaan Sheriff    schedule 21.10.2020
comment
Мохамед, у меня это не сработало. Я использовал следующий xpath и теперь получил щелчок по радио: // * [@ id = 'flight-tab-container'] / form / div [1] / ul / li [3] / label. Большое спасибо за ваша помощь !!! Я так благодарен !!! - person Luís Pedro Cruz da Silva; 21.10.2020

Это должно работать //input[@id='tt3'] или //input[@value='MultiDestino']

Вы можете оценить xpath в консоли Chrome следующим образом $x("//input[@value='MultiDestino']")

Xpath, который вы вернули, пустой []

person Radeesh    schedule 21.10.2020
comment
Радеш, у меня это не сработало. Я использовал следующий xpath и теперь получил щелчок по радио: // * [@ id = 'flight-tab-container'] / form / div [1] / ul / li [3] / label. Большое спасибо за ваша помощь !!! Я так благодарен !!! - person Luís Pedro Cruz da Silva; 21.10.2020

Локатор неверен. Более того - даже если он действителен, такой способ поиска элементов ненадежен (вы использовали позицию элемента - [3] в случае изменения порядка локатор будет тормозить). Предлагаю селектор css:

input[value='MultiDestino']
person Piotr M.    schedule 21.10.2020
comment
Петр, у меня не получилось. Я использовал следующий xpath, и теперь у меня щелкнули по радио: //*[@id='flights-tab-container'pting/form/div[1 ]/ul/li[3 ]/label. Большое спасибо за ваша помощь !!! Я так благодарен !!! - person Luís Pedro Cruz da Silva; 21.10.2020

Что касается локаторов, вы всегда должны начинать с чего-то, что вряд ли изменится. Обычно это идентификаторы, имена и различные другие настраиваемые атрибуты в зависимости от сайта. В случае с этим сайтом у трех переключателей, на которые вы смотрите, есть идентификатор.

Боковое примечание ... иногда сайты / страницы не соблюдают стандарты HTML, которые требуют, чтобы идентификатор был уникальным на странице, поэтому, даже если у вашего желаемого элемента есть идентификатор, всегда проверяйте, чтобы он был уникальным на странице. В этом случае идентификаторы уникальны.

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

driver.findElement(By.id("tt3")).click();

В некоторых ваших комментариях похоже, что Selenium может с трудом нажимать на сам INPUT, а LABEL работает. В этом случае вы можете немного изменить локатор и использовать приведенный ниже код.

driver.findElement(By.cssSelector("#tt3 + label")).click();

В приведенном выше селекторе CSS # означает идентификатор, а + означает следующий родственник. Дополнительную информацию см. В документации W3C.

person JeffC    schedule 21.10.2020