【问题标题】:Python Selenium clicking on element doesn't work - Unable to get the filePython Selenium 单击元素不起作用 - 无法获取文件
【发布时间】:2021-04-12 06:00:48
【问题描述】:

我在 Python 中使用 Selenium 包。

<td align="right" valign="middle" title="">
    <a href="/modules/etat/etat.php?file=Détails DA Année en cours2021.xlsx">26/01/2021</a><br>
    <a href="/modules/etat/etat.php?file=Détails DA Année en cours2021.xlsx" title="26/01/2021">10/04/2021</a><br>
</td>

正常使用时,点击链接,直接下载到Downloads文件夹中的文件(我用的是Chromedriver) 在 Selenium 中,我通过 partial_link_text 搜索选择元素,但没有问题。但是点击它什么也没做:((没有错误)

elems = driver.find_elements_by_partial_link_text('Détails DA')
for elem in elems:
    elem.click()

我也尝试通过 driver.get() 直接进入链接,但效果相同(直接进入浏览器中的链接也不起作用)。

注意这个页面有一个js脚本。也许是问题。我远非专家:/

<script src="/js/etat/etat.js" type="text/javascript" charset="utf-8"></script>

任何帮助不胜感激。 提前致谢

【问题讨论】:

    标签: selenium


    【解决方案1】:

    要获取第一个定位器,请使用 xpath:

    link1 = driver.find_element_by_xpath("//a[contains(text(), '26/01/2021')]")
    

    第二个用途:

    link2 = driver.find_element_by_xpath("//a[contains(@title,'26/01/2021')]")
    

    或:

    link2 = driver.find_element_by_xpath("//a[contains(text(), '10/04/2021')]")
    

    另外,添加显式等待:

    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    wait = WebDriverWait(driver, timeout=30)
    wait.until(EC.element_to_be_clickable((By.XPATH, "//a[contains(text(), '10/04/2021')]")))
    el = driver.find_element_by_xpath("//a[contains(text(), '10/04/2021')]")
    list_view.click()
    

    【讨论】:

    • 谢谢。但我在选择时收到一条错误消息:selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element:
    • 添加更大的或指向站点的链接。如果您不知道如何正确格式化它,请将其放置为纯文本。我会帮忙编辑。另外,添加您正在执行的代码
    • 当我打印(driver.page_source)时,我应该找到这些元素的html部分被替换为“ "
    • 将此添加到问题中,以便我可以搜索您正在寻找的定位器。和你之前做的一样:html代码。
    • 再说一遍,根本不是专家,但不能是上面提到的js在“selenium session”中没有正确执行?对我来说仍然很奇怪,因为当我查看 selenium 打开的 chrome 窗口时,代码就在那里,而不是在 driver.page_source...
    【解决方案2】:

    试试这个 -

    elems = driver.find_element_by_xpath("//a[contains(@href, '/modules/etat/etat.php?file=Détails DA Année en cours2021.xlsx')]").click()
    

    【讨论】:

    • 同样的错误:“selenium.common.exceptions.NoSuchElementException:消息:没有这样的元素:无法找到元素:{“method”:“xpath”,“selector”:“//a [包含(@href, '/modules/etat/etat.php?file=Détails DA Année en cours2021.xlsx')]"} (会话信息: chrome=89.0.4389.114)"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-26
    • 2020-05-30
    • 2021-04-05
    • 2019-04-13
    • 1970-01-01
    相关资源
    最近更新 更多