Как нажать на элемент привязки с селеном, используя python? - PullRequest
1 голос
/ 09 января 2020

Я новичок в селене, и я пытался какое-то время нажать на элемент привязки. Я попытался css -selector, lint_text, xpath, absolute xpath, но я все еще не могу нажать на него, и вместо этого я получаю это сообщение об ошибке:

selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: Driver Schedule

Кто-нибудь знает, как обойти это ?

Снимок экрана элемента:

Изображение кода:

Here is the picture of the code

1 Ответ

1 голос
/ 09 января 2020

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

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

    WebDriverWait(driver, 20).until(EC.invisibility_of_element((By.CSS_SELECTOR, "div.app-spinner-layer.active")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Driver Schedule"))).click()
    
  • Использование PARTIAL_LINK_TEXT:

    WebDriverWait(driver, 20).until(EC.invisibility_of_element_located((By.XPATH, "//div[@class='app-spinner-layer active']")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "Driver Schedule"))).click()
    
  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.invisibility_of_element((By.CSS_SELECTOR, "div.app-spinner-layer.active")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "li.pll a[href$='weekly-view']"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.invisibility_of_element_located((By.XPATH, "//div[@class='app-spinner-layer active']")))
    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[contains(@href,'weekly-view') and contains(., 'Driver Schedule')]"))).click()
    
  • Примечание : Вы должны добавить следующие импорты:

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