Python Selenium:无法找出span标签中可点击链接元素的xpath

时间:2019-06-14 01:49:12

标签: python selenium xpath css-selectors webdriverwait

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

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

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

3 个答案:

答案 0 :(得分: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
    

答案 1 :(得分:0)

尝试下面的xpath。

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

答案 2 :(得分:0)

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

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