Как я могу получить этот html код по xpath для использования селена на python? - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть кнопка обновления, а в 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>

Ответы [ 2 ]

2 голосов
/ 26 февраля 2020

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

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

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

0 голосов
/ 26 февраля 2020

Требуемый элемент - это элемент с поддержкой 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
    
...