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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

2回答

1749閲覧

seleniumでchromeを表示させたいがうまく動作しない

riho456

総合スコア22

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2023/02/09 01:35

編集2023/02/09 04:03

実現したいこと

seleniumを使用してchromeを表示させたい

前提

皆様、いつもお世話になっております。
seleniumの練習の為、chromeを表示させたいのですが以下のエラーが表示されどうしても
うまくいきません。ネットで調べた情報を色々試したりもしましたが、ダメでした。
どこが悪いのかアドバイス頂けたら幸いです。Python初心者になります。

発生している問題・エラーメッセージ

[root@localhost TEST]# python3 sample2.py [WDM] - ====== WebDriver manager ====== [WDM] - Current google-chrome version is 109.0.5414 [WDM] - Get LATEST chromedriver version for 109.0.5414 google-chrome [WDM] - Driver [/root/.wdm/drivers/chromedriver/linux64/109.0.5414.74/chromedriver] found in cache Traceback (most recent call last): File "sample2.py", line 8, in <module> driver = webdriver.Chrome(ChromeDriverManager().install()) File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__ desired_capabilities=desired_capabilities) File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__ self.start_session(capabilities, browser_profile) File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session response = self.execute(Command.NEW_SESSION, parameters) File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute self.error_handler.check_response(response) File "/usr/local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally. (unknown error: DevToolsActivePort file doesn't exist) (The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)

該当のソースコード

Python

1from selenium import webdriver 2from webdriver_manager.chrome import ChromeDriverManager 3from selenium.webdriver.chrome.options import Options 4options = Options() 5 6options.add_argument('--headless') 7options.add_argument("--no-sandbox") 8driver = webdriver.Chrome(ChromeDriverManager().install()) 9driver.get('https://google.co.jp/') 10driver.quit()

試したこと

・option追加
options.add_argument('--headless')
options.add_argument("--no-sandbox")
・webdriver-managerのインストール

補足情報(FW/ツールのバージョンなど)

・Centos7
・Python3.6.8
・Google Chrome 109.0.5414.119
・ChromeDriver 109.0.5414.74
・webdriver-manager 3.7.1
・chromedriver-binary 109.0.5414.74.0
・selenium 3.141.0

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

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

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

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

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

jbpb0

2023/02/09 03:29

https://pypi.org/project/webdriver-manager/ の「Use with Chrome」を見ると、「selenium 4」の場合はコードの書き方を変えないといけないようです #driver = webdriver.Chrome(ChromeDriverManager().install()) from selenium.webdriver.chrome.service import Service as ChromeService driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install())) で、どうでしょうか?
riho456

2023/02/09 04:01

jbpb0さん コメントありがとうございます。すいませんseleniumのVer書いてませんでした。3.141.0です。実行すると以下のエラーになります。 [root@localhost TEST]# python3 sample2.py [WDM] - ====== WebDriver manager ====== [WDM] - Current google-chrome version is 109.0.5414 [WDM] - Get LATEST chromedriver version for 109.0.5414 google-chrome [WDM] - Driver [/root/.wdm/drivers/chromedriver/linux64/109.0.5414.74/chromedriver] found in cache Traceback (most recent call last): File "sample2.py", line 11, in <module> driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install())) TypeError: __init__() got an unexpected keyword argument 'service' selenium4にするにはPythonのVerも3.7にしないといけないみたいです。あげてやってみるのも一つの手でしょうか。
Demerara

2023/02/09 06:08

提示されているコードでは、option が指定されていません。 driver = webdriver.Chrome(ChromeDriverManager().install(), options=options) とすれば、どうでしょうか? もし、"unknown error: DevToolsActivePort file doesn't exist" というエラーが出たら、次の行を追加してデバッグポートを指定してください。 options.add_argument("--remote-debugging-port=9222")
riho456

2023/02/09 06:57

Demeraraさん コメントありがとうございます。 unknownが出た為、デバッグポート追加しました。その上で実行すると [root@localhost TEST]# python sample3.py [WDM] - ====== WebDriver manager ====== [WDM] - Current google-chrome version is 109.0.5414 [WDM] - Get LATEST chromedriver version for 109.0.5414 google-chrome [WDM] - Driver [/root/.wdm/drivers/chromedriver/linux64/109.0.5414.74/chromedriver] found in cache になりました。
Demerara

2023/02/09 07:23 編集

エラーは出なくなったが想定通りの挙動ではないということでしょうか? ヘッドレスにしてるので何も表示されないのは正常ですが、どのような挙動を想定されていますか? ブラウザウィンドウを表示させたいのでした。失礼しました。 となると、ヘッドレスとサンドボックス無効化のオプションを削除して、 options.add_argument('--disable-dev-shm-usage') というオプションを追加してください。
riho456

2023/02/09 08:21

Demeraraさん 返信ありがとうございます。教えていただいたものを追加して実行してみました。 from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.chrome.options import Options options = Options() #options.add_argument('--headless') #options.add_argument("--no-sandbox") options.add_argument("--remote-debugging-port=9222") options.add_argument('--disable-dev-shm-usage') driver = webdriver.Chrome(ChromeDriverManager().install(), options=options) driver.get('https://google.co.jp/') driver.quit() seleniumを初めて使用するのでわからないのですが、実行後にこの場合chromeが新規に立ち上がる挙動と考えていいんでしょうか?chromeが起動してこないです。
jbpb0

2023/02/09 09:18 編集

> chromeが起動してこないです。 > python3 sample2.py のように実行するのではなく、ターミナルでpythonを対話モードで起動して、そこにコードを一行ずつ入力してみてください 当方のmacでは、下記のようになります > driver = webdriver.Chrome(ChromeDriverManager().install(), options=options) で、chromeが起動します > driver.get('https://google.co.jp/') で、chromeに「https://google.co.jp/」が表示されます > driver.quit() で、chromeが終了します > python3 sample2.py のように実行すると、ちょっとの間(1秒くらい?)だけchromeが起動して、終了します 一応「https://google.co.jp/」が表示されるのは見えます 【追記】 コードの最後の「driver.quit()」を削除して > python3 sample2.py のように実行した場合は、chromeは終了せず、「https://google.co.jp/」が表示された状態のまま残ります
jbpb0

2023/02/09 09:28

この質問の内容とは直接は関係無いかもしれませんが、 > ・ChromeDriver 109.0.5414.74 ・webdriver-manager 3.7.1 ・chromedriver-binary 109.0.5414.74.0 は、全部同じ役割をするものですよね 複数入れてると変なことが起きるかもしれないので、一つだけにした方がいいかも 「webdriver-manager」は、chromeのバージョンに合う「chromedriver」を自動的に入れてくれるものなので、それを使うのが便利です 他のは、chromeが勝手にバージョンアップされたら、その都度chromeのバージョンに合う「chromedriver」を手動でインストールしないといけないので、メンドくさい
riho456

2023/02/10 00:43 編集

jbpb0さん 何度もありがとうございます。一行ずつやってみたのですが、chromeは起動しませんでした。pyファイルで実行すると以下の結果になり、Demeraraさんのアドバイスのおかげでエラーは出なくなりましたがchromeが開きません。使用しているPCはWindowsです。 [root@localhost TEST]# python sample3.py [WDM] - ====== WebDriver manager ====== [WDM] - Current google-chrome version is 109.0.5414 [WDM] - Get LATEST chromedriver version for 109.0.5414 google-chrome [WDM] - Driver [/root/.wdm/drivers/chromedriver/linux64/109.0.5414.74/chromedriver] found in cache それと別途作成していたchrome画面のスクリーンショットを取得するpyファイルの方は、うまくいきました。色々とアドバイスありがとうございます。引き続き調べてみます。 from selenium import webdriver from selenium.webdriver.chrome.options import Options options = webdriver.ChromeOptions() options.add_argument('--headless') options.add_argument('--no-sandbox') options.add_argument('--disable-gpu') browser = webdriver.Chrome(options=options) browser.implicitly_wait(10) url = "https://google.com" browser.get(url) browser.save_screenshot('google.png') browser.quit()
jbpb0

2023/02/10 00:59 編集

> 使用しているPCはWindowsです。 あれ? > Centos7 ではないのですか? 質問のエラーメッセージに「/usr/local/lib/python3.6/...」とかありますが
riho456

2023/02/10 01:22

ああ、ごめんなさい。WindowsのvscodeからCentosにリモート接続して使っているって意味です。
jbpb0

2023/02/10 08:12

> WindowsのvscodeからCentosにリモート接続して使っている その状態で、Centos側で(pythonを使わず)普通にchromeを起動したら、Windowsパソコンの画面のどこかにchromeは表示されるのでしょうか?
riho456

2023/02/13 00:09

jbpb0さん お返事遅くなってごめんなさい。おはようございます、いや表示しないです。そういう環境で使用して可能なのかもよくわからないです。ヘッドレスモードなら起動してますけど。
riho456

2023/02/13 00:25 編集

jbpb0さん すいません。もう一度自分でよく調べて本当に実施したい事をまとめて再投稿させていただきます。 その時、ご縁がありましたらまたよろしくお願いします。
jbpb0

2023/02/13 05:26 編集

> 表示しない Centos側で(pythonを使わず)普通にchromeを起動して、chromeがWindows側に表示されないのなら、Centos側でpythonからchromeを起動しても表示されないのは当然ですよね > seleniumでchromeを表示させたいがうまく動作しない リモートデスクトップとかvncとかのような、CentosのGUI画面がWindowsに表示される「Centosにリモート接続」方法を使えば、Centos側のchromeをWindows側に表示させることができます
guest

回答2

0

自己解決

再度自分で調べて本当に実施したい事を再投稿させていただきます。
複数回答からベストアンサーを選ぶ方法がよくわからなかったので
お忙しい中コメントくれた方々、本当にありがとうございました。ご縁がありましたらまたよろしくお願い致します。

投稿2023/02/13 00:30

編集2023/02/13 00:31
riho456

総合スコア22

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

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

0

browser = webdriver.Chrome(ChromeDriverManager().install())

new_driver = ChromeDriverManager().install()
service = ChromeService(executable_path=new_driver)
browser = webdriver.Chrome(service=service, options=options)
にしたらどうなりますか?

(参考)
https://qiita.com/Brutus/items/1998249c0a38c334be8e

投稿2023/02/12 11:45

編集2023/02/12 11:48
kirissaki

総合スコア41

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

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

riho456

2023/02/13 00:20

kirissakiさん すいません。もう一度自分でよく調べて本当に実施したい事をまとめて再投稿させていただきます。 その時、ご縁がありましたらまたよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問