Python + Selenium での Firefox のスクレイピングでエラー：selenium-manager.exe がない？


Python 3.10（←当初12と誤記していたものを訂正） と Selenium 4.15.2 で Firefox 115.4.0_ESR
のスクレイピングをするコードを書いています。

「最近のSeleniumのバージョンには SeleiumManager
が付いていて、WebDriver（FirefoxなのでGeckoDriver）の手動更新は不要」との記述をWebで見つけて、下記のようにドライバーを読み込もうとしています。

[code]

    from selenium import webdriver
    
    from selenium.webdriver.firefox.service import Service as FirefoxService  
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By
    
    driver = webdriver.Firefox()
    
[/code]

デバッグすると次のようなエラーが出ます。

[code]

    selenium.common.exceptions.WebDriverException: Message: Unable to obtain working Selenium Manager binary; C:\Users\（中略）\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\common\windows\selenium-manager.exe
    
[/code]

確かにそのフォルダはあっても exe ファイルはありません。  
そこで、Seleniumの公式サイトで SeleniumManager の実行ファイルの在処を  
下記から辿ることができたので、ダウンロードして上記のフォルダに置きました

<https://www.selenium.dev/documentation/selenium_manager/#getting-selenium-
manager>

すると（一歩進んで）今度はデバッグで「バージョンが合わない」「実行できない」  
とエラーが出ます。エラーメッセージは；

エラー #1:

[code]

    OSError: [WinError 216] このバージョンの %1 は、実行中の Windows のバージョンと互換性がありません。
    
[/code]

エラー #2:

[code]

    selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: C:\Users\(中略)\AppData\Local\Programs\Python\Python310\lib\site-packages\selenium\webdriver\common\windows\selenium-manager.exe --browser firefox --output json
    コンピューター のシステム情報を確認してから、ソフトウェアの発行元に問い合わせてください。
    
[/code]

結局、WebDriver Manager
を使う方法で所望の動作はするようになったのですが、SeleniumManagerの機能を使えていないのがいまいちだと感じています。

解決策、トライする方向性、参照すべきサイトなど、ご存じの方は教えていただけませんでしょうか。




selenium-manager.exeが如何とか以前に、Selenium 4.xx になってから変更になった使い方に対応していないことが原因でしょう。  
これらの記事はfirefoxが対象ではありませんが、同じ原因・問題を扱っています。  
[pythonを使っていたのですがgoogleの更新でエラーとなってしまいます。](https://ja.stackoverflow.com/q/96463/26370)  
[スクレイピングのためにmsedgedriverを使用したが、エラーが発生する](https://ja.stackoverflow.com/q/96072/26370)  
詳しいことは上記記事およびそこに示された資料へのリンクをたどって調べてください。

質問のソースで言えば、`geckodriver.exe`があるフォルダへの`PATH`が通っていれば、以下のようにして正常に動作します。  
(ESR版では無い普通のFireFox 119.0.1で試していますので何かが違うかもしれませんが)

[code]

    from selenium import webdriver
    
    from selenium.webdriver.firefox.service import Service as FirefoxService
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By
    
    options = webdriver.FirefoxOptions()
    service = FirefoxService()
    driver = webdriver.Firefox(service=service, options=options)
    
[/code]

* * *

その後検索を続けて、類似の現象/メッセージの発生している以下の記事を見つけました。

[Selenium: Unable to obtain driver for chrome using Selenium
Manager](https://stackoverflow.com/q/77333062/9014308)  
質問と同様のスクリプトを実行して質問と同様(通知された順番は逆のようですが)のエラーメッセージが発生していたものを、pip, python,
selenium
を更新して、seleniumは別の環境に入れた(venvで専用の仮想環境を作ったのかも？)ところ、メッセージが変わったが依然としてエラー状態だという質問ですが、コメントで私の回答と同様の以下の回答を紹介されて、それで解決したとのこと。

[AttributeError: 'str' object has no attribute 'capabilities' in
selenium](https://stackoverflow.com/q/76928765/9014308) の3つ目の回答

コメントのやりとりで最後に提案したように、関連するソフトウェアの更新を行って、結局は再インストールに近い仮想環境の作成で解決したようなので、試してみてはどうでしょう？




selenium-manager.exeが如何とか以前に、Selenium 4.xx になってから変更になった使い方に対応していないことが原因でしょう。  
これらの記事はfirefoxが対象ではありませんが、同じ原因・問題を扱っています。  
[pythonを使っていたのですがgoogleの更新でエラーとなってしまいます。](https://ja.stackoverflow.com/q/96463/26370)  
[スクレイピングのためにmsedgedriverを使用したが、エラーが発生する](https://ja.stackoverflow.com/q/96072/26370)  
詳しいことは上記記事およびそこに示された資料へのリンクをたどって調べてください。

質問のソースで言えば、`geckodriver.exe`があるフォルダへの`PATH`が通っていれば、以下のようにして正常に動作します。  
(ESR版では無い普通のFireFox 119.0.1で試していますので何かが違うかもしれませんが)

[code]

    from selenium import webdriver
    
    from selenium.webdriver.firefox.service import Service as FirefoxService
    from selenium.webdriver.common.keys import Keys
    from selenium.webdriver.common.by import By
    
    options = webdriver.FirefoxOptions()
    service = FirefoxService()
    driver = webdriver.Firefox(service=service, options=options)
    
[/code]

* * *

その後検索を続けて、類似の現象/メッセージの発生している以下の記事を見つけました。

[Selenium: Unable to obtain driver for chrome using Selenium
Manager](https://stackoverflow.com/q/77333062/9014308)  
質問と同様のスクリプトを実行して質問と同様(通知された順番は逆のようですが)のエラーメッセージが発生していたものを、pip, python,
selenium
を更新して、seleniumは別の環境に入れた(venvで専用の仮想環境を作ったのかも？)ところ、メッセージが変わったが依然としてエラー状態だという質問ですが、コメントで私の回答と同様の以下の回答を紹介されて、それで解決したとのこと。

[AttributeError: 'str' object has no attribute 'capabilities' in
selenium](https://stackoverflow.com/q/76928765/9014308) の3つ目の回答

コメントのやりとりで最後に提案したように、関連するソフトウェアの更新を行って、結局は再インストールに近い仮想環境の作成で解決したようなので、試してみてはどうでしょう？

