У меня есть кнопка обновления, и в python, бот, я хочу нажать на эту кнопку, но я пробую много опций, но не работаю, я не могу найти элемент по XPath. Пожалуйста, помогите мне? Спасибо за вашу помощь.

Примечание: мне нужно найти, используя текст «Обновить», потому что много кнопок у меня есть на веб-странице.

<span class="a-spacing-top-small">
  <span class="a-button a-button-primary a-button-small sc-update-link" id="a-autoid-2">
    <span class="a-button-inner">
      <a href="javascript:void(0);" data-action="update" class="a-button-text" role="button" id="a-autoid-2-announce" style="">Update
        <span class="aok-offscreen">Nike Academy 18 Rain Jacket Men's (Obsidian, M)</span>
      </a>
    </span>
  </span>
</span>
0
EceGelalSoyak 26 Фев 2020 в 11:43

2 ответа

Лучший ответ

Желаемый элемент - это JavaScript включенный элемент, чтобы найти / click() в элементе, который вам нужен Создайте WebDriverWait для element_to_be_clickable(), и вы можете использовать любой из следующих Стратегии локаторов:

  • Используя CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "span.a-button.a-button-primary.a-button-small.sc-update-link[id^='a-autoid'] a.a-button-text[id$='announce']>span.aok-offscreen"))).click()
    
  • Используя XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//span[@class='a-button a-button-primary a-button-small sc-update-link' and starts-with(@id,'a-autoid')]//a[@class='a-button-text' and contains(@id,'announce')]/span[@class='aok-offscreen' and starts-with(., 'Nike Academy 18 Rain Jacket Men')]"))).click()
    
  • Примечание . Вам необходимо добавить следующий импорт:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
0
DebanjanB 26 Фев 2020 в 09:17

Это должно работать:

button = driver.find_element_by_xpath("//a[@data-action,'update']")

Где водитель - это ваш экземпляр водителя.

2
OceanFire 26 Фев 2020 в 09:13