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

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

新規登録して質問してみよう
ただいま回答率
85.48%
WSL(Windows Subsystem for Linux)

WSL (Windows Subsystem for Linux) は、Windows10のOS上でLinux向けのバイナリプログラムを実行可能にする機能です。また、WindowsOSのAPIを用いた仕組みを提供しており、Linux側からWindowsOSへのファイルアクセスもできます。

Chrome

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

Python 3.x

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

selenium

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

Q&A

2回答

3558閲覧

chromedriverを動かしたいです。

jack_kanzaki

総合スコア106

WSL(Windows Subsystem for Linux)

WSL (Windows Subsystem for Linux) は、Windows10のOS上でLinux向けのバイナリプログラムを実行可能にする機能です。また、WindowsOSのAPIを用いた仕組みを提供しており、Linux側からWindowsOSへのファイルアクセスもできます。

Chrome

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

Python 3.x

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

selenium

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

1グッド

0クリップ

投稿2019/12/07 03:13

環境

ubuntu 18.04 LTS
Python 3.6.9

WSL

1$ which chromedriver 2/usr/local/bin/chromedriver 3$ chromedriver --version 4ChromeDriver 78.0.3904.105

WSL

1$ which google-chrome 2/usr/bin/google-chrome 3$ google-chrome --version 4Google Chrome 78.0.3904.108

chromedriver.pyに書いた内容

1つ目

python3

1from time import sleep 2from selenium import webdriver 3from selenium.webdriver.chrome.options import Options 4 5options = Options() 6options.add_argument('--headless') 7options.add_argument('--no-sandbox') 8options.add_argument("--user-data-dir=/home/jack/.config/google-chrome/Default") #Path to your chrome profile 9 10driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver',chrome_options=options) 11 12driver.get('https://www.google.com') 13driver.save_screenshot('screenshot.png') 14 15sleep(5) 16 17driver.quit()

実行すると、

WSL

1$ python3 chromedriver.py 2Traceback (most recent call last): 3 File "chromedriver.py", line 10, in <module> 4 driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver',chrome_options=options) 5 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__ 6 desired_capabilities=desired_capabilities) 7 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__ 8 self.start_session(capabilities, browser_profile) 9 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session 10 response = self.execute(Command.NEW_SESSION, parameters) 11 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute 12 self.error_handler.check_response(response) 13 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response 14 raise exception_class(message, screen, stacktrace) 15selenium.common.exceptions.WebDriverException: 16Message: unknown error: Could not remove old devtools port file. 17Perhaps the given user-data-dir at /home/jack/.config/google-chrome/Default 18is still attached to a running Chrome or Chromium process.

2つ目

python3

1from time import sleep 2from selenium import webdriver 3from selenium.webdriver.chrome.options import Options 4 5options = Options() 6options.add_argument('--headless') 7options.add_argument('--no-sandbox') 8options.add_argument("--user-data-dir=/usr/bin/google-chrome") #Path to your chrome profile 9 10driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver',chrome_options=options) 11 12driver.get('https://www.google.com') 13driver.save_screenshot('screenshot.png') 14 15sleep(5) 16 17driver.quit()

実行すると、

WSL

1$ python3 chromedriver.py 2Traceback (most recent call last): 3 File "chromedriver.py", line 10, in <module> 4 driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver',chrome_options=options) 5 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__ 6 desired_capabilities=desired_capabilities) 7 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__ 8 self.start_session(capabilities, browser_profile) 9 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session 10 response = self.execute(Command.NEW_SESSION, parameters) 11 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute 12 self.error_handler.check_response(response) 13 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response 14 raise exception_class(message, screen, stacktrace) 15selenium.common.exceptions.WebDriverException: Message: unknown error: cannot create default profile directory

3つ目

python3

1from time import sleep 2from selenium import webdriver 3from selenium.webdriver.chrome.options import Options 4 5options = Options() 6options.add_argument('--headless') 7options.add_argument('--no-sandbox') 8 9driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver',chrome_options=options) 10 11driver.get('https://www.google.com') 12driver.save_screenshot('screenshot.png') 13 14sleep(5) 15 16driver.quit()

実行すると、

WSL

1$ python3 chromedriver.py 2Traceback (most recent call last): 3 File "chromedriver.py", line 10, in <module> 4 driver = webdriver.Chrome(executable_path='/usr/local/bin/chromedriver',chrome_options=options) 5 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/chrome/webdriver.py", line 81, in __init__ 6 desired_capabilities=desired_capabilities) 7 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__ 8 self.start_session(capabilities, browser_profile) 9 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session 10 response = self.execute(Command.NEW_SESSION, parameters) 11 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute 12 self.error_handler.check_response(response) 13 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response 14selenium.common.exceptions.WebDriverException: Message: unknown error: cannot create default profile directory 15jack@kanzaki:/mnt/c/Users/abcxy/.vscode/python$ 16jack@kanzaki:/mnt/c/Users/abcxy/.vscode/python$ python3 chromedriver.py 17Traceback (most recent call last): 18 File "chromedriver.py", line 12, in <module> 19 driver.save_screenshot('screenshot.png') 20 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 1055, in save_screenshot 21 return self.get_screenshot_as_file(filename) 22 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 1032, in get_screenshot_as_file 23 png = self.get_screenshot_as_png() 24 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 1064, in get_screenshot_as_png 25 return base64.b64decode(self.get_screenshot_as_base64().encode('ascii')) 26 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 1074, in get_screenshot_as_base64 27 return self.execute(Command.SCREENSHOT)['value'] 28 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute 29 self.error_handler.check_response(response) 30 File "/home/jack/.local/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response 31 raise exception_class(message, screen, stacktrace) 32selenium.common.exceptions.WebDriverException: Message: chrome not reachable 33 (Session info: headless chrome=78.0.3904.108)

質問

以上、自分が挑戦してみたことです。
コードの方に問題があるのか、
または、google-chromeなどのファイルや、ディレクトリの設置方法に問題があるのか、
疑問に思っています。
ご回答の程、よろしくお願いします。

shirai👍を押しています

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

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

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

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

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

otn

2019/12/07 03:44

そもそも Chrome単独で正常起動できますか?
jack_kanzaki

2019/12/07 04:03

sudo google-chrome --no-sandboxで一瞬chromeの画面が起動したあと、すぐに消えてしまいます。
jack_kanzaki

2019/12/07 04:05

今、出先で返信遅くなります、すみません。
guest

回答2

0

Chromeが正常に起動しないとすると、Selenium以前の問題ですね。

メッセージからはディレクトリのアクセス権のように見えますが。

ありがちな事としては、一度 root ユーザーで実行してしまい、root 所有のディレクトリが作られ、ユーザーがそこに書けないとか。

まずはChromeを正常に使える事を目標に。

投稿2019/12/07 04:49

otn

総合スコア84503

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

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

jack_kanzaki

2019/12/09 03:32

「一度 root ユーザーで実行してしまい、root 所有のディレクトリが作られ、ユーザーがそこに書けないとか。」 こちらはどのような意味ですか。
jack_kanzaki

2019/12/09 03:33

https://teratail.com/questions/184287 こちらが、自分と同じ問題を抱えている方の質問なのですが、 何かよい解決策はありますでしょうか。 自分でも、この問題について考えていきます。 よろしくお願いします。
otn

2019/12/09 03:44

> こちらはどのような意味ですか。 一度sudoでchromeを起動したことがありませんでしたか?という意味です。 cannot create default profile directory が原因のようなのですが、LinuxでChromeを使ったことないので、具体的な場所は知りません。 起動オプションで、別の場所を指定してみるとか、--incognito でプライベートモードにするとか。
jack_kanzaki

2019/12/09 04:07

はい、sudo google-chrome --no-sandboxで実行しました。 また、チャレンジしてみます。 いつもすぐのご返信ありがとうごさいます!!
otn

2019/12/09 12:44

> はい、sudo google-chrome --no-sandboxで実行しました。 多分それが原因です。初心者は安易にsudoしてはいけません。 find /home/jack/ '!' -user jack -ls の結果を書いてください。
jack_kanzaki

2019/12/09 16:50

$ find /home/jack/ '!' -user jack -ls 562949953847312 0 drwx------ 1 root root /home/jack/.cache/google-chromefind: ‘/home/jack/.cache/google-chrome’: Permission denied 2251799814095148 0 drwx------ 1 root root /home/jack/.config/google-chrome/BrowserMetrics find: ‘/home/jack/.config/google-chrome/BrowserMetrics’: Permission denied 844424930557932 0 drwx------ 1 root root /home/jack/.config/google-chrome/Crash\ Reports find: ‘/home/jack/.config/google-chrome/Crash Reports’: Permission denied 562949953847298 0 drwx------ 1 root root /home/jack/.config/google-chrome/Default find: ‘/home/jack/.config/google-chrome/Default’: Permission denied 562949953847321 0 drwx------ 1 root root /home/jack/.config/google-chrome/Dictionaries find: ‘/home/jack/.config/google-chrome/Dictionaries’: Permission denied 562949953847328 0 -rw-r--r-- 1 root root /home/jack/.config/google-chrome/First\ Run 16607023626354456 0 drwx------ 1 root root /home/jack/.config/google-chrome/NativeMessagingHosts find: ‘/home/jack/.config/google-chrome/NativeMessagingHosts’: Permission denied 562949953847324 0 drwx------ 1 root root /home/jack/.config/google-chrome/Safe\ Browsing find: ‘/home/jack/.config/google-chrome/Safe Browsing’: Permission denied 562949953847282 0 drwx------ 1 root root /home/jack/.config/google-chrome/ShaderCache find: ‘/home/jack/.config/google-chrome/ShaderCache’: Permission denied 10414574138583728 0 lrwxrwxrwx 1 root root /home/jack/.config/google-chrome/SingletonCookie -> 14277038259606255176 14073748835745625 0 lrwxrwxrwx 1 root root /home/jack/.config/google-chrome/SingletonLock -> kanzaki-21315 6192449487922336 0 lrwxrwxrwx 1 root root /home/jack/.config/google-chrome/SingletonSocket -> /tmp/.com.google.Chrome.s0aW5X/SingletonSocket 18858823440185089 0 -rw------- 1 root root /home/jack/.mysql_history 2251799814111213 0 drwx------ 1 root root /home/jack/.pki find: ‘/home/jack/.pki’: Permission denied
otn

2019/12/10 01:47

やはり、ホームディレクトリの下にroot所有のディレクトリやファイルができていますね。 root所有なので、自分では更新できなくなっています。 原因は 不用意なsudoの使用です。 sudo chown -R jack:jack /home/jack で、所有者を自分自身(jack)の物に変更してください。
jack_kanzaki

2019/12/10 03:09

すみません。 sudo chown -R jack:jack /home/jack させていただきました。
jack_kanzaki

2019/12/10 03:11

そのあと、以下のコードを打ち込んだのですが、 やはり、以前と同じエラーが出てしまいました。
jack_kanzaki

2019/12/10 03:16 編集

$ google-chrome Failed to move to new namespace: PID namespaces supported, Network namespace supported, but failed: errno = Permission denied Trace/breakpoint trap (core dumped) $ google-chrome --no-sandbox [107:122:1210/120815.091572:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory [133:133:1210/120815.326806:ERROR:gl_surface_glx.cc(78)] XGetWindowAttributes failed for window 3145732. [133:133:1210/120815.326888:ERROR:gl_surface_glx.cc(839)] Failed to get GLXConfig [133:133:1210/120815.326899:ERROR:gpu_info_collector.cc(60)] gl::GLContext::CreateOffscreenGLSurface failed [133:133:1210/120815.326905:ERROR:gpu_info_collector.cc(199)] Could not create surface for info collection. [133:133:1210/120815.326911:ERROR:gpu_init.cc(66)] gpu::CollectGraphicsInfo failed. [133:133:1210/120815.335890:ERROR:viz_main_impl.cc(176)] Exiting GPU process due to errors during initialization [107:107:1210/120816.400637:ERROR:process_singleton_posix.cc(256)] readlink(/tmp/.com.google.Chrome.s0aW5X/SingletonCookie) failed: Permission denied (13) [107:366:1210/120816.423300:ERROR:bus.cc(393)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix") [107:366:1210/120816.436080:ERROR:bus.cc(393)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix") [107:366:1210/120816.436120:ERROR:bus.cc(393)] Failed to connect to the bus: Could not parse server address: Unknown address type (examples of valid types are "tcp" and on UNIX "unix") [107:400:1210/120816.551394:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory [107:400:1210/120816.553816:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory [107:400:1210/120816.554100:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory [107:400:1210/120816.554262:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory [107:400:1210/120816.554423:ERROR:bus.cc(393)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory [422:425:1210/120816.647636:ERROR:platform_shared_memory_region_posix.cc(53)] Descriptor access mode (2) differs from expected (0) [387:387:1210/120816.665041:ERROR:platform_shared_memory_region_posix.cc(53)] Descriptor access mode (0) differs from expected (2) [107:107:1210/120816.676081:ERROR:CONSOLE(2)] "Uncaught SyntaxError: Unexpected number", source: chrome-extension://nkeimhogjdpnpccoofpliimaahmaaome/thunk.js (2) [415:415:1210/120816.678021:ERROR:platform_shared_memory_region_posix.cc(53)] Descriptor access mode (0) differs from expected (2) [434:445:1210/120816.689040:ERROR:platform_shared_memory_region_posix.cc(53)] Descriptor access mode (2) differs from expected (0) [107:121:1210/120818.928979:FATAL:gpu_data_manager_impl_private.cc(986)] The display compositor is frequently crashing. Goodbye. [1210/120818.929803:ERROR:nacl_helper_linux.cc(311)] NaCl helper process running without a sandbox! Most likely you need to configure your SUID sandbox correctly Trace/breakpoint trap (core dumped)
jack_kanzaki

2019/12/10 03:18

$ google-chrome --no-sandbox このコードでは、いったんgoogleが起動したような動作をするのですが、 途中で中断してしまいました。 socket /var/run/dbus/system_bus_socket ここが原因であると思うのですが、 まだ、うまく改善できておりません。
otn

2019/12/10 11:23

ググると、結構、難しそうですね。 私もWin10ですが、WSLにChromeを入れる気がしないので、実験までできません。 Seleniumを使うということについては、Firefoxに逃げるか、 Chromeにこだわるなら、「Win10+WSLでChromeが起動しない」ということで新たに質問してもらうか。
jack_kanzaki

2019/12/10 15:46

そうなんですよ、 わかりました。 まだ、もう少し検討したいと思います、 ご回答、ありがとうございます。
t_obara

2019/12/20 01:37

私はDockerを入れて、その中で動かすようにしました。Chromiumを入れれば動作はしますよ。
jack_kanzaki

2019/12/31 08:57

なるほど、dockerに関しては今学習している際中です。 また、dockerを学習次第、試させていただきます!
guest

0

私の手元では試せていませんが、次のオプションを試してみてはどうでしょうか?
こちら を参考にしました。

python

1chrome_options.add_argument("--disable-setuid-sandbox")

投稿2019/12/21 04:07

kit494way

総合スコア317

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

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

jack_kanzaki

2019/12/31 08:59

ご回答ありがとうございます。 現在、環境を変えてしまったので、また、問題に直面しだい、 再び質問をさせてください!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問