Python Selenium: невозможно определить xpath для кликабельного элемента ссылки в теге span - PullRequest
1 голос
/ 14 июня 2019

Я использую Селен Python и попробовал более десятка способов найти интерактивный элемент ссылки из тега span, но безуспешно. Я пытался использовать xpath по тексту ссылки, частичному тексту ссылки и другим исследованным предложениям.

Последние 3 попытки с использованием:

  1. browser.find_element_by_link_text("Web Time Clock-Eastern").click()

  2. element = browser.find_element_by_partial_link_text('Clock-Eastern')

  3. browser.wait.until(EC.element_to_be_clickable((By.XPATH, '//a[@span]/html/body/div[6]/div[1]/div[1]/div[1]/div/div/div[4]/div[2]button'))).click()

Я предоставил изображение проверяемого элемента html ниже:

https://drive.google.com/file/d/1ULk2fxCRUohz21VlfrrlX8iSvmvSAJ8k/view?usp=sharing

Я ожидаю найти элемент, который я могу передать методу click, чтобы открыть соответствующую веб-страницу.

Ответы [ 3 ]

1 голос
/ 14 июня 2019

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

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

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.cardLinks a[href*='php/timeclock/WEB'] > span"))).click()
    
  • Использование XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='cardLinks']//a[contains(@href, 'php/timeclock/WEB')]/span[text()='Web Time Clock-Eastern']"))).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 голосов
/ 14 июня 2019

Одна из основных причин использования XPath заключается в том, что у вас нет подходящего атрибута id или name для элемента, который вы хотите найти.

browser.find_element_by_xpath("//div[@class='cardLinks']/div/a").click()
0 голосов
/ 14 июня 2019

Попробуйте следующий xpath.

 //span[normalize-space(.)='Web Time Clock-Eastern']/parent::a
...