Невозможно найти элемент в Python Использование селена - PullRequest
0 голосов
/ 10 января 2020

У меня проблема с поиском элемента с помощью xPath.

<li>
  <a aria-current="false" href="/drop"> 
    <button tabindex="0" type="button" style="border: 10px; box-sizing: border-box; display: inline-block; font-family: Roboto, sans-serif; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); cursor: pointer; text-decoration: none; margin: 0px; padding: 0px; outline: none; font-size: inherit; font-weight: inherit; position: relative; height: 36px; line-height: 36px; min-width: 88px; color: rgba(0, 0, 0, 0.87); transition: all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms; border-radius: 2px; user-select: none; overflow: hidden; background-color: rgba(0, 0, 0, 0); text-align: center; top: -7px;">
    <div>
      <span class="material-icons" color="rgba(0, 0, 0, 0.87)" style="color: rgba(0, 0, 0, 0.87); position: relative; font-size: 18px; display: inline-block; user-select: none; transition: all 450ms cubic-bezier(0.23, 1, 0.32, 1) 0ms; vertical-align: middle; margin-left: 12px; margin-right: 0px;">
        pin_drop
      </span>
      <span style="position: relative; padding-left: 8px; padding-right: 16px; vertical-align: middle; letter-spacing: 0px; text-transform: uppercase; font-weight: 500; font-size: 14px;">Drop</span>
    </div>
    </button>
  </a>
</li>
browser.find_element_by_xpath('//*[@id="root"]/div/div[1]/div[1]/nav/ul/li[7]/a/button/div/span[3]').click()

Эй, я пытался использовать xPath, и другой метод, похоже, не может найти этот элемент.

Ответы [ 2 ]

0 голосов
/ 10 января 2020

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

  • Использование CSS_SELECTOR:

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li > a[href=/drop] > button span:nth-of-type(2)")))
    
  • Использование XPATH:

    WebDriverWait(browser, 20).until(EC.element_to_be_clickable((By.XPATH, "//li/a[@href='/drop']/button//span[text()='Drop']")))
    
  • Примечание : необходимо добавить следующие операции импорта:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
0 голосов
/ 10 января 2020

Если вы пытаетесь нажать на кнопку «Отбросить», используйте приведенный ниже xpath.

//li/a[@href="/drop"]//span[.='Drop']

enter image description here

Включить импорт ниже:

from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait

Ваш код должен быть:

WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.XPATH, "//li/a[@href='/drop']//span[.='Drop']"))).click()
...