【问题标题】:Clicking Links that arent on screen with Selenium使用 Selenium 单击屏幕上未显示的链接
【发布时间】:2018-06-05 12:58:49
【问题描述】:

我正在尝试点击网站上的链接,其中有一整页。我尝试使用 is_displayed() 选项,我回来了“真”但仍然给了我这个错误。我之前在其他项目中遇到过这个错误,这是因为 selenium 没有看到链接。我尝试在代码中放置一个向下滚动选项,但这只适用于向下页面滚动太远的次数。

我还需要哪些其他选项才能使链接可见以供点击?

代码:

href1 = driver.find_element_by_xpath("//*[@id='divDesktopResults']//div//div//div//a[@href='" + link + "']")

if (href1.is_displayed()):
    print('true')
    href1.click()
else:
    print('False')

错误:

selenium.common.exceptions.WebDriverException: Message: unknown error: Element <a class="popimg" data-toggle="popover" style="text-decoration:underline;margin-right:20px;" data-content="<img style='max-width:250px;' src='/Home/GetPng?ID=D218098469' ></a>" data-html="true" data-trigger="hover" href="#pdfviewer?ID=D218098469">...</a> is not clickable at point (441, 514). Other element would receive the click: <div class="row">...</div>
 (Session info: chrome=66.0.3359.181)
 (Driver info: chromedriver=2.38.552522   (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 10.0.16299 x86_64)

编辑:

另一种方式解决,将所有链接放在一个数组中,并使用 driver.get 而不是点击链接。

【问题讨论】:

    标签: python selenium-webdriver


    【解决方案1】:

    Selenium 抱怨的不是链接看不到,而是链接顶部有其他东西。单击链接所在的屏幕将改为单击“行”div。这意味着一个 CSS 错误,您有多个元素一个在另一个之上。您可以通过为链接提供一个非常高的 Z 值来确认这一点,以便它位于其他所有内容之上并重新运行您的测试。

    【讨论】:

    • 如何给链接一个非常高的 Z 值。你提到点击行,a标签不是链接本身而不是div标签吗?
    • 是的,但是 selenium 会找到 a 标签,并返回它所在的 x,y 坐标。然后它实质上将虚拟鼠标移动到这些坐标上并“点击”它们。您的错误消息是单击这些坐标会改为单击该 div,因为它位于锚标记的顶部。有关 z 索引的信息,请访问:CSS z-index 属性 - W3Schools 在线网络教程w3schools.com/cssref/pr_pos_z-index.asp
    • 我能用 python 或 selenium 改变 Z 值吗?
    • 你可以破解它,但最简单的方法是修改 HTML。
    • 听起来不错 - 确保您编辑您的问题以包括您如何解决它。这样,如果人们遇到同样的问题,他们就能看到您的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    相关资源
    最近更新 更多