Как щелкнуть по элементу с атрибутом href, используя Python Selenium - PullRequest
0 голосов
/ 09 января 2020

href такой:

href="../s-reminderNotice.asp?fname=b%2D3c%2DpLessonBooking%2Easp%3Flimit%3Dpl"

enter image description here Я просто хочу click() эту текстовую ссылку на веб-сайте. Мой код:

driver.find_element_by_xpath('//a[@href="../s-reminderNotice.asp?fname=b%2D3c%2DpLessonBooking%2Easp%3Flimit%3Dpl"]')

1 Ответ

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

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

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.LINK_TEXT, "Booking without Fixed Instructor"))).click()
    
  • Использование PARTIAL_LINK_TEXT:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, "Booking without Fixed Instructor"))).click()
    
  • Использование CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "a.sidelinkbold[href*='LessonBooking'][onmouseover*='Practical Training Booking']"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//a[@class='sidelinkbold' and contains(@href,'LessonBooking')][contains(@onmouseover, 'Practical Training Booking')]"))).click()
    
  • Примечание : необходимо добавить следующие импорты:

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