3 Вопрос: Как нажать на кнопку

вопрос создан в Thu, May 2, 2019 12:00 AM

Я устал использовать локатор xpath и css , но оба не могут щелкнуть.

Может ли кто-нибудь помочь понять, почему элемент кнопки отличается от остальных?

Вот URL

Пробная версия кода:

driver.findElement(By.xpath("//span[@id='a-autoid-2']")).click();
    
- 3
  1. Почему вы не можете? Ваш скрипт вылетает? Киньте ошибку? Это щелкает не ту вещь?
    2019-05-02 15: 22: 14Z
  2. какую кнопку вы пытаетесь нажать?
    2019-05-02 15: 33: 08Z
  3. кнопка Qty: 1, просто элемент не может быть найден.
    2019-05-03 01: 36: 05Z
3 ответа                              3                         

Элемент не является элементом button, а тегом <span>, связанным с DropDown , похожим на button из-за присутствия атрибутов class a-button, 0600350991 и 0600350991, 060035011 и 060035099 /р>

Чтобы щелкнуть по нужному элементу, вы можете использовать любой из следующих Стратегии локаторов :

  • CSSSelector

    a-button-dropdown
  • XPath

    a-button-small
1
2019-05-02 20: 49: 53Z
  1. это работает. поэтому мне нужна комбинация локаторов ... все еще учусь и не совсем уверен, как я могу получить и комбинировать правильный. Спасибо!
    2019-05-03 01: 40: 46Z

Вместо этого используйте приведенный ниже xpath, который имеет роль кнопки, а не родительский диапазон.

driver.findElement(By.cssSelector("span.a-button.a-button-dropdown.a-button-small span.a-dropdown-prompt")).click();
    
0
2019-05-02 15: 19: 01Z
  1. Исключение в потоке "main" org.openqa.selenium.NoSuchElementException: нет такого элемента: невозможно найти элемент: {"method": "xpath", "selector" : "//диапазон [@ ид = 'а-AutoID-2'] //диапазон [@ роли 'кнопку' =]"}
    2019-05-03 01: 34: 39Z

Если вы пытаетесь изменить количество (кол-во), попробуйте ниже CSS Selector

driver.findElement(By.xpath("//span[@class='a-button a-button-dropdown a-button-small']//span[@class='a-dropdown-label']")).click();

Для этой выпадающей кнопки есть атрибут [aria-press = "false"]. По умолчанию используется значение «false», и после нажатия атрибут меняется на «true». Теперь WebDriver не может найти раскрывающийся список Qty, так как атрибут вышеуказанного локатора изменен. Попробуйте использовать свободное ожидание после вашего нажатия в коде, чтобы получить обновленные атрибуты DOM.

    
0
2019-05-02 16: 01: 52Z
//span[@id='a-autoid-2']//span[@role='button']
источник размещен Вот