Python Selenium出错(通过xpath查找元素)

2024-09-30 01:20:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写一个代码列表来自动化我的日常文件下载过程。我正在为此使用Python Selenium。但是,我很难找到其中一个点击

HTMI代码如下:

<div class="card dark-blue"> <h3 data-mh="title-research" style="height: 52px;">Rated Range Prices (LT)</h3> <h4 class="disp_date">26-Jan-2021 17:47:58</h4> <div class="divider"></div> <a href="javascript:seemore('F10002');" value="F10002" class="link">See More »</a> </div>

这是我的密码:

link = driver.find_element_by_xpath("//a[@href='javascript:seemore('F10002');']")

错误消息:

InvalidSelectorException: invalid selector: Unable to locate an element with the xpath expression //*[@href='javascript:seemore('F10002');'] because of the following error:
SyntaxError: Failed to execute 'evaluate' on 'Document': The string '//*[@href='javascript:seemore('F10002');']' is not a valid XPath expression.
  (Session info: chrome=88.0.4324.104)

有人能告诉我这件事吗?非常感谢


Tags: theto代码divlinkelementjavascriptxpath
2条回答

您正在另一个单引号对中使用单引号对

试一试

link = driver.find_element_by_xpath('''//a[@href="javascript:seemore('F10002');"]''')

要定位元素请参阅更多»,您可以使用以下任一Locator Strategies

  • 使用css_selector

    element = driver.find_element(By.CSS_SELECTOR, "div.card.dark-blue a.link[href*='seemore']")
    
  • 使用xpath

    element = driver.find_element(By.XPATH, "//div[@class='card dark-blue']//a[@class='link' and starts-with(., 'See More')]")
    

理想情况下,要定位可点击的元素,需要为visibility_of_element_located()引入WebDriverWait,并且可以使用以下Locator Strategies之一:

  • 使用CSS_SELECTOR

    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div.card.dark-blue a.link[href*='seemore']")))
    
  • 使用XPATH

    element = WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//div[@class='card dark-blue']//a[@class='link' and starts-with(., 'See More')]")))
    
  • 注意:您必须添加以下导入:

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

相关问题 更多 >

    热门问题