【问题标题】:Is it possible to use `element.click()` on Selenium with Chrome even on headless mode?即使在无头模式下,是否可以在 Selenium 上使用 `element.click()` 和 Chrome?
【发布时间】:2018-10-23 22:38:31
【问题描述】:

我正在编写一个脚本,以使用 Selenium 及其 Python 中的 Chrome 驱动程序在网站上下载一组文件,但我发现看到浏览器打开并在程序打开新选项卡或单击时获得焦点令人恶心在下载按钮上。

所以我宁愿使用无头模式。但是,该元素总是给我以下错误:

WebDriverException:消息:未知错误:元素 ... 在点 (435, 575) 处不可点击。其他元素会收到点击:

...

(会话信息:无头 chrome=66.0.3359.139) (驱动程序信息:chromedriver=2.37.544337(8c0344a12e552148c185f7d5117db1f28d6c9e85),平台=Mac OS X 10.13.4 x86_64)

这个错误曾经在我的非无头模式下发生,但是由于我将浏览器的大小更改为driver.maximize_window(),所以错误已经消失了。这可以清楚地表明该按钮必须在屏幕上可见,才能在 Chrome 上被推送。

但是在无头模式下,按钮可能是隐藏的,这样元素总是无法点击,从而导致错误。那么有什么方法可以让按钮在无头模式下也可以点击?

相关代码如下,最后一行导致错误:

def login(driver, url, username, password):
    driver.get(url)
    uname = driver.find_element_by_name("login")
    uname.send_keys(username) 

    passw = driver.find_element_by_name("password")
    passw.send_keys(password)
    submit_button = driver.find_element_by_class_name("button")
    action = webdriver.ActionChains(driver)
    action.move_to_element(submit_button)
    submit_button.click()

【问题讨论】:

标签: python google-chrome selenium


【解决方案1】:

但是由于我通过 driver.maximize_window() 改变了浏览器的大小

当我在 Jenkins 与 headless Chrome 合作时,我曾经遇到过这个问题。问题是无头模式下的浏览器没有以全分辨率打开。所以我添加了使用

以特定分辨率打开浏览器的行
driver.set_window_size(1440, 900)

然后传递 url 并获取所有内容。您可以尝试这种方法一次,看看这是否是问题所在。

【讨论】:

    【解决方案2】:

    我也遇到了这个问题。我只是这样修复它:

    chrome_options = webdriver.ChromeOptions()
    chrome_options.add_argument('--window-size=1920,1080')  
    chrome_options.add_argument('--headless')
    browser = webdriver.Chrome(chrome_options=chrome_options)
    

    【讨论】:

      【解决方案3】:

      简短回答:是的。

      但是在无头和非无头模式下使用点击有一个区别。 对于非 HEADLESS 模式,如果您在 chromedriver 中进行点击,同时您自己在屏幕上的某处执行点击,那么这可能会干扰您的 Selenium 自动化。这在 HEADLESS 模式下不会成为问题。

      【讨论】:

        猜你喜欢
        • 2023-01-22
        • 1970-01-01
        • 2019-12-04
        • 2018-01-20
        • 2016-10-31
        • 1970-01-01
        • 2020-02-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多