Я устал использовать локатор xpath и css , но оба не смогли щелкнуть.
Может кто-нибудь помочь понять, почему элемент кнопки отличается от остальных?
Пробный код:
driver.findElement(By.xpath("//span[@id='a-autoid-2']")).click();
3 ответа
Элемент является не элементом button
, а тегом <span>
, связанным с DropDown , похожим на button
, из-за присутствия класса атрибуты a-button
, a-button-dropdown
и a-button-small
.
Чтобы щелкнуть по нужному элементу, вы можете использовать любой из следующих стратегий локатора а> :
< EM> CSSSelector :
driver.findElement(By.cssSelector("span.a-button.a-button-dropdown.a-button-small span.a-dropdown-prompt")).click();
< EM> XPath :
driver.findElement(By.xpath("//span[@class='a-button a-button-dropdown a-button-small']//span[@class='a-dropdown-label']")).click();
Если вы пытаетесь изменить количество (кол-во), попробуйте следующий селектор CSS
driver.FindElement(By.CssSelector("#a-autoid-2 span[data-action='a-dropdown-button']")).Click();
Для этой выпадающей кнопки есть атрибут [aria-press = "false"]. По умолчанию используется значение «false», и после нажатия атрибут меняется на «true». Теперь WebDriver не может найти раскрывающийся список Qty, так как атрибут вышеуказанного локатора изменен. Попробуйте использовать свободное ожидание после вашего нажатия в коде, чтобы получить обновленные атрибуты DOM.
Вместо этого используйте приведенный ниже xpath, который имеет роль кнопки, а не родительский диапазон.
//span[@id='a-autoid-2']//span[@role='button']
Похожие вопросы
Связанные вопросы
Новые вопросы
java
Java - это язык программирования высокого уровня. Используйте этот тег, если у вас возникли проблемы с использованием или пониманием самого языка. Этот тег редко используется отдельно и чаще всего используется вместе с [spring], [spring-boot], [jakarta-ee], [android], [javafx], [hadoop], [gradle] и [maven].