Ubuntu22.04运行webbot示例遇SessionNotCreatedException错误求助
问题:Ubuntu 22.04运行webbot代码出现SessionNotCreatedException错误
问题详情
尝试在Ubuntu 22.04中运行以下Python webbot示例代码:
from webbot import Browser web = Browser() web.go_to('google.com') web.type('hello its me') # or web.press(web.Key.SHIFT + 'hello its me') web.press(web.Key.ENTER) web.go_back() web.click('Sign in') web.type('mymail@gmail.com' , into='Email') web.click('NEXT' , tag='span') web.type('mypassword' , into='Password' , id='passwordFieldId') web.click('NEXT' , tag='span') # you are logged in . woohoooo
使用Python3运行时出现错误:
web = Browser() File "/usr/local/lib/python3.10/dist-packages/webbot/webbot.py", line 68, in __init__ self.driver = webdriver.Chrome(executable_path=driverpath, options=options) File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/chrome/webdriver.py", line 80, in __init__ super().__init__( File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/chromium/webdriver.py", line 104, in __init__ super().__init__( File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 286, in __init__ self.start_session(capabilities, browser_profile) File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 378, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py", line 440, in execute self.error_handler.check_response(response) File "/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py", line 245, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.SessionNotCreatedException: Message: session not created exception: Missing or invalid capabilities (Driver info: chromedriver=2.39.562737 (dba483cee6a5f15e2e2d73df16968ab10b38a2bf),platform=Linux 5.19.0-38-generic x86_64)
已通过以下命令安装Chrome:
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb sudo apt install ./google-chrome-stable_current_amd64.deb
需求:解决该错误,仅需实现网站登录功能,不限制浏览器类型。
解决方案
方案1:修复Chrome与chromedriver版本不兼容问题
错误核心是chromedriver版本过旧(2.39),和当前安装的最新Chrome版本不匹配。按以下步骤操作:
查看当前Chrome版本
google-chrome --version输出类似
Google Chrome 124.0.6367.60,记主版本号(比如124)。卸载旧的chromedriver
sudo rm /usr/local/bin/chromedriver下载对应版本的chromedriver
找到ChromeDriver官方渠道中与Chrome主版本一致的Linux版chromedriver包进行下载。解压并安装
unzip chromedriver-linux64.zip sudo mv chromedriver-linux64/chromedriver /usr/local/bin/ sudo chmod +x /usr/local/bin/chromedriver验证版本匹配
chromedriver --version输出版本应和Chrome主版本一致。
重新运行你的Python代码,问题即可解决。
方案2:改用Firefox浏览器
如果不想折腾Chrome版本,改用Firefox更简单,步骤如下:
安装Firefox
sudo apt update sudo apt install firefox -y安装geckodriver(Firefox的WebDriver)
从Mozilla官方渠道下载对应Linux系统的geckodriver包,解压后执行以下命令:tar -xvzf geckodriver-v0.34.0-linux64.tar.gz sudo mv geckodriver /usr/local/bin/ sudo chmod +x /usr/local/bin/geckodriver修改webbot代码指定使用Firefox
只需初始化Browser时指定浏览器为firefox:from webbot import Browser # 指定使用Firefox web = Browser(browser='firefox') web.go_to('google.com') web.type('hello its me') web.press(web.Key.ENTER) web.go_back() web.click('Sign in') web.type('mymail@gmail.com' , into='Email') web.click('NEXT' , tag='span') web.type('mypassword' , into='Password' , id='passwordFieldId') web.click('NEXT' , tag='span')
运行修改后的代码即可正常使用Firefox完成登录操作。
内容的提问来源于stack exchange,提问作者rare77
相关产品推荐
相关产品推荐

