【发布时间】:2018-03-20 16:43:09
【问题描述】:
我已经在我的 Macbook Pro 上运行了这个程序,所以为了将它传输到我的服务器以供长时间使用,我遇到了障碍。服务器是 Ubuntu 16.04(服务器)和 Python 2.7.12。
我使用 pip 安装了最新版本的 selenium,以及最新版本的 ChromeDriver。我可以从命令行很好地启动它(有一个 GPU 错误,但似乎没有造成任何问题。)
但是,当我尝试从 python 中启动它时,使用以下代码:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
path_to_chromedriver = '/usr/local/bin/chromedriver'
options = Options()
options.add_argument("start-maximized")
options.add_argument("--headless")
options.add_argument("--disable-gpu")
options.add_argument("--disable-extensions")
options.add_argument("--no-sandbox")
service_args = ['--verbose']
service_log_path = '/tmp/local/chromedriver.log'
driver = webdriver.Chrome(executable_path=path_to_chromedriver, chrome_options=options, service_args=service_args, service_log_path=service_log_path)
但是,当我启动时,这是我在 chromedriver.log 中得到的内容(在 COMMAND InitSession 的所有初始启动脚本之后:
[0.998][INFO]: Launching chrome: /opt/google/chrome/google-chrome --disable-background-networking --disable-client-side-phishing-detection --disable-default-ap\
ps --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-web-resources --enable-automation --enable-logging --ign\
ore-certificate-errors --load-extension=/tmp/.org.chromium.Chromium.tPkUXa/internal --log-level=0 --metrics-recording-only --no-first-run --password-store=basi\
c --remote-debugging-port=12752 --safebrowsing-disable-auto-update --test-type=webdriver --use-mock-keychain --user-data-dir=/tmp/.org.chromium.Chromium.ODIHcL\
data:,
[0.998][DEBUG]: DevTools request: http://localhost:12752/json/version
[1.078][DEBUG]: DevTools request failed
它会继续吐出该错误消息大约 60 秒,直到它最终在 Python 中返回:
WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally
(Driver info: chromedriver=2.29.461571 (8a88bbe0775e2a23afda0ceaf2ef7ee74e822cc5),platform=Linux 4.4.0-116-generic x86_64)
我终其一生都无法弄清楚如何解决这个问题,我已经进行了广泛的搜索。
我的印象是,如果我使用 headless,我不需要使用任何虚拟屏幕仿真,但这会是问题吗? (我在 Ubuntu 中以无 GUI 的初始化模式运行。)
另外,我不喜欢在该命令中没有传递 --headless 来启动 chrome-stable...这是一个问题吗?
谢谢。
编辑:
Chromedriver 版本(我得到了我认为是最新版本):
$ chromedriver
Starting ChromeDriver 2.29.461571 (8a88bbe0775e2a23afda0ceaf2ef7ee74e822cc5) on port 9515
Only local connections are allowed.
硒
$ pip freeze | grep selenium
selenium==3.11.0
铬
$ google-chrome --version
Google Chrome 65.0.3325.162
这是显示正在发生的事情的日志跟踪 - 它在 DevTools 失败时循环 60 秒然后死掉。
Full log/error trace:
[0.997][INFO]: COMMAND InitSession {
"capabilities": {
"alwaysMatch": {
"browserName": "chrome",
"goog:chromeOptions": {
"args": [ "start-maximized", "--headless", "--disable-gpu", "--disable-extensions", "--no-sandbox" ],
"extensions": [ ]
},
"platformName": "any"
},
"firstMatch": [ {
} ]
},
"desiredCapabilities": {
"browserName": "chrome",
"goog:chromeOptions": {
"args": [ "start-maximized", "--headless", "--disable-gpu", "--disable-extensions", "--no-sandbox" ],
"extensions": [ ]
},
"platform": "ANY",
"version": ""
}
}
[0.997][INFO]: Populating Preferences file: {
"alternate_error_pages": {
"enabled": false
},
"autofill": {
"enabled": false
},
"browser": {
"check_default_browser": false
},
"distribution": {
"import_bookmarks": false,
"import_history": false,
"import_search_engine": false,
"make_chrome_default_for_user": false,
"show_welcome_page": false,
"skip_first_run_ui": true
},
"dns_prefetching": {
"enabled": false
},
"profile": {
"content_settings": {
"pattern_pairs": {
"https://*,*": {
"media-stream": {
"audio": "Default",
"video": "Default"
}
}
}
},
"default_content_setting_values": {
"geolocation": 1
},
"default_content_settings": {
"geolocation": 1,
"mouselock": 1,
"notifications": 1,
"popups": 1,
"ppapi-broker": 1
},
"password_manager_enabled": false
},
"safebrowsing": {
"enabled": false
},
"search": {
"suggest_enabled": false
},
"translate": {
"enabled": false
}
}
[0.997][INFO]: Populating Local State file: {
"background_mode": {
"enabled": false
},
"ssl": {
"rev_checking": {
"enabled": false
}
}
}
[0.998][INFO]: Launching chrome: /opt/google/chrome/google-chrome --disable-background-networking --disable-client-side-phishing-detection --disable-default-apps --disable-hang-monitor --disable-popup-blocking --disable-prompt-on-repost --disable-sync --disable-web-resources --enable-automation --enable-logging --ignore-certificate-errors --load-extension=/tmp/.org.chromium.Chromium.tPkUXa/internal --log-level=0 --metrics-recording-only --no-first-run --password-store=basic --remote-debugging-port=12752 --safebrowsing-disable-auto-update --test-type=webdriver --use-mock-keychain --user-data-dir=/tmp/.org.chromium.Chromium.ODIHcL data:,
[0.998][DEBUG]: DevTools request: http://localhost:12752/json/version
[1.078][DEBUG]: DevTools request failed
...
[61.018][DEBUG]: DevTools request: http://localhost:12752/json/version
[61.018][DEBUG]: DevTools request failed
[61.021][INFO]: RESPONSE InitSession unknown error: Chrome failed to start: exited abnormally
[61.021][DEBUG]: Log type 'driver' lost 0 entries on destruction
[61.021][DEBUG]: Log type 'browser' lost 0 entries on destruction
【问题讨论】:
-
看起来您使用的是旧版本的 chromedriver。尝试更新 chromedriver(和 selenium)。
-
另外,以
--开头的start-maximized。 -
您能否使用完整的错误堆栈跟踪以及您正在使用的二进制文件的版本信息来更新问题?
-
好的——添加了跟踪、库/二进制版本。
-
我是个十足的白痴。你是对的@sytech 我更新到最新并修复了它。任何可能会发现此内容的人请注意——确保您使用最新版本并且不要从旧教程中复制粘贴!
标签: python selenium selenium-chromedriver headless