【问题标题】:Selenium click in headless modeSelenium 在无头模式下单击
【发布时间】:2021-02-23 03:31:06
【问题描述】:

我一直在努力解决这个问题。我有一个使用 Selenium 的网页抓取项目,并且我的脚本在无头模式被禁用时工作。一旦我将参数(“--headless”)添加到我的 chrome 驱动程序选项(chrome 驱动程序版本 88.0.4324)中,它就无法单击该元素。我看到其他人提到最大化窗口或设置无头驱动程序的窗口大小可以解决这个问题,我没有这样的解决方案。

这是点击元素的那一行:

browser.find_element_by_xpath('//a [@href][@class="button icon arrowdown"]').click()

这是我在上述 xpath 之前使用的:

browser.find_element_by_class('button icon arrowdown').click()

感谢大家的帮助!

【问题讨论】:

    标签: python python-3.x selenium selenium-webdriver selenium-chromedriver


    【解决方案1】:

    我使用 javascript click 尝试过同样的问题

    driver.execute_script("document.getElementsByClassName('button icon arrowdown')[0].click()")
    

    【讨论】:

    • 发生了什么?它为您解决了吗?
    • 所以我执行了上面给出的脚本,我没有收到任何错误,所以我可以假设 chrome 驱动程序很好地收到了 javascript,但不幸的是,按钮没有交互。
    【解决方案2】:

    发生异常时对无头窗口进行截图和快照。这将帮助您找出发生这种情况的原因。您可以尝试使用已经具备这些功能的 selene 库https://github.com/yashaka/selene,或者编写自己的 snap-shooter。

    取决于此报价

    我看到其他人提到最大化窗口或 设置无头驱动程序的窗口大小可以解决这个问题,我有 对这样的解决方案没有运气。

    您需要知道,在 headless 中最大化 - 不起作用,因为它是 headless 并且不知道要最大化哪个屏幕尺寸。 您应该在非无头模式下获取浏览器的尺寸,并直接在 selenium 中为有头模式和无头模式设置它。这可以解决您的问题。即使没有 - 尝试截屏或制作视频以了解无头模式下发生了什么。

    【讨论】:

    • 所有需要的东西都出现了!我尝试分配窗口尺寸而不是最大化窗口,但仍然没有运气。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-12-16
    • 2020-09-27
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多