実現したいこと
出力エラーの原因と解決を実現したいです。
各バージョンは下記のとおりです。
OS: Windows 11 64ビット
パイソン: 3.14.0
Selenium: 4.38.0
IDE: vscode
Chrome: 143.0.7499.17
Chromeドライバー: 143.0.7499.17
*seleniumをpipした際、"C:/Users/ユーザ名/.cache/selenium/“下に自動で出力されたもの
発生している問題・分からないこと
seleniumを用いてchromeを自動実行しようと初歩的なコードを実行したところ、下記エラーが出力されました。
エラーメッセージ
error
1File "c:\workplace\python\main2.py", line 11, in <module> 2 3driver webdriver.Chrome(options-options) 4 5File "C:\Users\AppData\Local\Programs\Python \Python314\Lib\site-packages\selenium\webdriver 6 7¥chrome webdriver.py", line 47, in_init_ 8 9super() init ( 10 11browser_name=Desired Capabilities.CHROME['browserName"], 12 13<3 lines>... 14 15keep alive keep_alive, 16 17File "C:\Users\AppData\Local\Programs\Python Python314\Lib\site-packages\selenium webdtiver 18 19¥chromium webdriver.py", line 71, in_init_ 20 21super() init (command executor executor, options options) 22 23File "C:\Users\AppData\Local\Programs\Python Python314\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 263, in init 24 25self.start session(capabilities) 26 27File "C:\Users\AppData\Local\Programs\Python\Python314\Lib\site-packages\selenium\webdriver 28 29Vremote webdriver.py", line 367, in start session 30 31self.session id response.get("sessionId") 32 33AttributeError: 'str' object has no attribute 'get'
該当のソースコード
Python
1from selenium import webdriver 2import time 3 4options = webdriver.ChromeOptions() 5options.set_capability("browserVersion", "beta") #Specify beta version 6 7driver = webdriver.Chrome (options=options) 8driver.get("https://www.google.com") 9time.sleep(10) 10driver.quit()
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
生成AIでコードを修正しようと試みましたがchromeやchromeドライバのバージョンを確認する以上の出力が得られませんでした。
他にもseleniumのバージョンに対応した記事を拝見しましたが、本エラーに関する有力な解答や知見を得ることはできませんでした。。
恐らく初歩的なミスかと思いますが、解決策わかる方いましたらご教示ください。
補足
エラーメッセージは一部インデントや誤字があるかと思います(諸事情によりスマホから手動で記入しています)。申し訳ありません。
エラーが発生したのは「該当のソースコード」の何行目ですか?(7行目ですか?)
オプションの指定をされていますが必須の設定ですか?
ご質問ありがとうございます。
#1 7行目で合っております。
#2 オプションは必須ではありません。ただオプションを設定していない状態でも上記エラーが出力されました。(オプションはChromeのバージョンに合わせたchromeドライバを用いる意図で設定しています。)
pythonが3.14でかなり新しいもののようですが、そうする理由はありますか?
最新のバージョンの初期段階では、モジュールが追随できずに問題が出る可能性があります。(この問題に関係するかどうかはわかりません。)
こだわらないのであれば、少し古めのものを使うのをお勧めします。
TakaiYさん
ご指摘ありがとうございます。バージョンは理由なく最新のものにしています。
ご指摘の通り、少し古いバージョンで試してみようと思います。
> (オプションはChromeのバージョンに合わせたchromeドライバを用いる意図で設定しています。)
下記の場合はβバージョンのChromeでのテストを意図したコードのように見えます。
> options.set_capability("browserVersion", "beta") #Specify beta version
SeleniumのバージョンによってはChromeやChromedriverを自動でインストールするようなので複数のChromeやdriverが競合していないか?一度チェックしても良いかもしれません。
手元の環境は Ubuntu Linux 25.10/Python 3.14.0/Selenium 4.38.0/Chrome: 143.0.7499.17/Chrom driver 143.0.7499.17 で、OS以外は同じバージョンですが、当該のエラーは発生しません。表示されているエラーメッセージは以下で、
File "C:\Users\...\Python\Python314\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 367, in start session
self.session_id = response.get("sessionId")
AttributeError: 'str' object has no attribute 'get'
これは以下の箇所になります。
selenium/py/selenium/webdriver/remote/webdriver.py at selenium-4.38.0 · SeleniumHQ/selenium
https://github.com/SeleniumHQ/selenium/blob/selenium-4.38.0/py/selenium/webdriver/remote/webdriver.py#L367
本来であれば変数 response は dict 型のはずなのですが(手元の環境で確認しました)、なぜか str 型になっています。
下記組み合わせでエラーなくブラウザが起動しました。ご参考まで。
Python 3.14.0
selenium 4.38.0
Crome 141.0.7390.108
Windows 11 Home
みなさんありがとうございます。以下試したことです。全て改善には至りませんでした。
#1 Python 3.13.9をインストール(前バージョンはアンインストール)
#2 Chromeやdriverをアンインストールし、その後seleniumで実行
その後調べたところ、エラーが出るのはSeleniumがchromedriverから期待するjsonレスポンスを受け取れず、文字列エラーを辞書として扱おうとしていると推測しています。
そのため根本原因はchromedriverの起動失敗と考えています。
現に私は本OS上で、過去にpythonではなくjavaでchromedriverを使用しました。そちらの競合が発生しているのでしょうか?該当のドライバは削除しましたが、、まだどこかに存在し競合する可能性はあるのでしょうか?
最小のコードでもエラー発生しますか?
from selenium import webdriver
driver = webdriver.Chrome ()
> 該当のドライバは削除しましたが、、
seleniumがダウンロードしたものは削除できていないのでは?
一度Pythonの仮想環境から作り直してみてはいかがでしょうか?
megさん、ありがとうございます。
おっしゃる通り、Seleniumがダウンロードしたもの(.catchフォルダ)を削除、Pythonの環境も新しく作り直し、最小のコードでもエラーが発生します。
正直これ以上何をすればいいのか、、という状況です。
前回のコメントで変数responseがdict型ではなくstr型になっている事をお伝えしましたが、以下のコードを実行すればresponseの内容(文字列)がコンソールに表示されます。エラーの原因の手掛かりが得られるかもしれません。
https://www.mycompiler.io/view/IB0BukRXqWA
melianさん
ご丁寧にありがとうございます!こちら明日になりますが試してみようと思います。
ところでselenium + Chrome は今までは普通に使えていたのでしょうか?それとも今回初めて使用してエラー発生したのでしょうか?
あなたの回答
tips
プレビュー