質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

1回答

1381閲覧

chromedriverの"Service"でexe実行時エラー

Yusuke3112

総合スコア0

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2023/04/13 01:02

実現したいこと

SeleniumでChromeを操作

エラーメッセージ

.pyの実行では動作するのですが、exe化して動かすと以下のエラーが出ます。

TypeError:__init__got an unexpected keyword argument 'service'

該当のソースコード

from selenium import webdriver from selenium.webdriver.chrome.service import Service as Service service = Service(executable_path="C:/tools/lib/chromedriver.exe") Driver = webdriver.Chrome(service = service) Driver.get("https://XXXXXXXXXXXXX")

補足情報

<test.pyの格納場所>
C:/tools
<chromedriver.exeの格納場所>
C:/tools/lib
<exe化する時の記述>
pyinstaller --onefile --hidden-import selenium --add-binary "C:/tools/lib/chromedriver.exe;." test.py
<各バージョン>
python 3.8.16
selenium 4.8.3

ご教授よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Demerara

2023/04/13 11:32

仮想環境を利用していますか?ファイルを実行する環境と、exe 化を実行する環境は同一ですか? Python 3.7 未満の Python が使われていると、Selenium 4.x には対応していないため、該当のエラーが出力されることがあります。
Yusuke3112

2023/04/13 23:49

仮想環境、利用しています。実行する環境・exe化する環境は同一でpython3.8.16です。 Anaconda promptを使用しており、Activateで環境を該当の仮想環境に切り替えて、pyinstallerを実行してexe作成していますが、何か環境に問題ありなのでしょうか・・・
Demerara

2023/04/14 08:17

PyInstaller が、Python 3.7 以降の Python を利用していない可能性が高いです。おそらく Python 3.7 未満の環境にインストールされている PyInstaller が動いてます。 exe 化する際の記述の先頭に、以下のように "python -m" をつけて実行してみてください。エラーに変化はあるでしょうか? python -m pyinstaller --onefile --hidden-import selenium --add-binary "C:/tools/lib/chromedriver.exe;." test.py ソースコードの方は、回答にあるように「os モジュールを使用して、カレントディレクトリを取得し、chromedriver.exeへのパスを正しく指定」してください。
guest

回答1

0

「ChatGPT(GPT-4)]により生成された文章です」

exeファイルを作成すると、実行時のカレントディレクトリが異なるため、chromedriver.exeのパスが正しく検出されていない可能性があります。os モジュールを使用して、カレントディレクトリを取得し、chromedriver.exeへのパスを正しく指定してみてください。

該当のソースコードを以下のように変更してください:

python

1import os 2from selenium import webdriver 3from selenium.webdriver.chrome.service import Service as Service 4 5# Get the current working directory 6current_dir = os.path.dirname(os.path.realpath(__file__)) 7 8# Create the path to chromedriver.exe 9chromedriver_path = os.path.join(current_dir, "chromedriver.exe") 10 11service = Service(executable_path=chromedriver_path) 12Driver = webdriver.Chrome(service=service) 13Driver.get("https://XXXXXXXXXXXXX")

そして、exe化する際の記述を以下のように変更してみてください:

css

1pyinstaller --onefile --hidden-import selenium --add-binary "C:/tools/lib/chromedriver.exe;./" test.py

上記の変更で、exeファイルを実行すると、正常に動作するはずです。もし問題が解決しない場合は、引き続きサポートさせていただきます。お気軽にお問い合わせください。

投稿2023/04/13 01:05

quiz

総合スコア269

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Yusuke3112

2023/04/13 01:21

同じエラーが出て解決しませんでした・・・
quiz

2023/04/13 01:28

「ChatGPT(GPT-4)]により生成された文章です」 すみません、私が提案した方法が効果がなかったようです。引き続きサポートさせていただきます。 それでは、ChromeDriverのインスタンス化の方法を少し変更してみましょう。以下のようにしてください。 ```python from selenium import webdriver from selenium.webdriver.chrome.service import Service service = Service(executable_path="C:/tools/lib/chromedriver.exe") driver = webdriver.Chrome(service=service) driver.get("https://XXXXXXXXXXXXX") ``` この方法でもエラーが発生する場合は、以下のように chrome_options を設定してみてください。 ```python from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options chrome_options = Options() service = Service(executable_path="C:/tools/lib/chromedriver.exe") driver = webdriver.Chrome(service=service, options=chrome_options) driver.get("https://XXXXXXXXXXXXX") ``` これでも問題が解決しない場合は、Python環境やライブラリのバージョンに問題がある可能性があります。PythonおよびSeleniumのバージョンを確認し、必要に応じてアップデートしてみてください。以下のコマンドでSeleniumを最新バージョンにアップデートできます。 ```css pip install --upgrade selenium ``` それでも問題が解決しない場合は、環境に問題がある可能性が高いです。その場合は、Python環境を再構築し、必要なライブラリを再インストールしてみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問