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

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

Вот URL

Пробный код:

driver.findElement(By.xpath("//span[@id='a-autoid-2']")).click();
-4
user2201789 2 Май 2019 в 18:13

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();
    
1
DebanjanB 2 Май 2019 в 20:49

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

driver.FindElement(By.CssSelector("#a-autoid-2 span[data-action='a-dropdown-button']")).Click();

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

0
KunduK 2 Май 2019 в 16:01

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

//span[@id='a-autoid-2']//span[@role='button']
0
supputuri 2 Май 2019 в 15:19