【问题标题】:Python Selenium: can't figure out xpath to clickable link element in span tagPython Selenium:无法找出跨度标记中可点击链接元素的xpath
【发布时间】:2019-10-28 15:15:18
【问题描述】:

我正在使用 selenium 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 的图像:

我希望找到一个可以通过click方法打开相应网页的元素。

【问题讨论】:

  • 获取anchor的xpath,而不是span

标签: python selenium xpath css-selectors webdriverwait


【解决方案1】:

对于click(),您必须为element_to_be_clickable() 诱导WebDriverWait 元素,您可以使用以下任一解决方案:

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

【讨论】:

    【解决方案2】:

    试试下面的 xpath。

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

    【讨论】:

    • 确定驱动范围是否与元素范围(主窗口、iframe或子窗口)匹配
    【解决方案3】:

    使用XPath 的主要原因之一是您没有合适的 id 或 name 属性来定位您想要定位的元素。

    browser.find_element_by_xpath("//div[@class='cardLinks']/div/a").click()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      • 2015-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多