当微调器使用 Selenium 和 Python 遮挡它时如何单击锚元素?

How to click on the anchor element when the spinner obscures it using Selenium and Python?

我是 selenium 的新手,一段时间以来我一直在尝试单击锚元素。我试过 css-selector,lint_text,xpath,absolute xpath 但我仍然无法点击它,而是收到此错误消息:

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

有谁知道如何解决这个问题?

更新:我现在收到这个错误:

selenium.common.exceptions.ElementClickInterceptedException: Message: Element <a href="#/schedule/weekly-view"> is not clickable at point (326,333) because another element <div class="app-spinner-layer active"> obscures it

To click() 在文本为 Driver Schedule 的元素上,因为它是一个 <a> 节点必须为 element_to_be_clickable() 引入 WebDriverWait,您可以使用以下任一方法 :

  • 使用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