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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

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

selenium

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

Q&A

解決済

1回答

6108閲覧

windows firefox プロセスが残る python selenium

navca

総合スコア44

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Python 3.x

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

selenium

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

0グッド

0クリップ

投稿2019/01/04 16:06

編集2019/01/09 03:11

初心者で恐縮ですがよろしくお願いします。
環境 
windows10
apache(xammp)
FireFox webdriver
要約: pythonでwindowsのコマンドを実行するsubprocess.Popen('taskkill /im geckodriver.exe /f', shell=True)を書いてもプロセスがkillできない。タスクマネージャーから手動で削除できる。Edgeで実行すると取得できます。

seleniumでプロセスが残ってしまうという問題をしらべてみるとたくさん出てきますが、driver.quitすれば良いくらいしか書いておらず、実際そうやっても残ってしまうため、subprocessでコマンドを実行してプロセスをkillしています。しかしそれでもバックグラウンドプロセスが残ってしまい、Firefoxやクロームで実行するとタブのくるくるがずっと回りっぱなしでdoneが返ってきません(なぜかEdgeで実行すると取得できます)。プロセスツリーをkillするはずのtaskkill /im geckodriver.exe /fをしてもプロセスが残るのはなぜでしょうか?また、そもそもquitすればプロセスをkillできるはずですが、quitしてもprocessが残ってしまうのはなぜでしょうか?

python3

1async def create_driver(url, loop=None): 2 options = Options() 3 options.add_argument('--headless') 4 webdriver.Firefox(options=options) 5 driver = webdriver.Firefox(executable_path=r'C:\xampp\cgi-bin\geckodriver-v0.23.0-win64\geckodriver') 6 loop.call_soon(functools.partial(driver.get, url)) 7 return driver 8 9urls = ['https://www.yahoo.co.jp/','https://teratail.com/'] 10loop = asyncio.get_event_loop() 11done, pending = loop.run_until_complete(asyncio.wait([create_driver(url, loop) for url in urls])) 12 13print(done) 14for i in done: 15 i.result().quit() 16 17subprocess.Popen('taskkill /im geckodriver.exe /f', shell=True)

↓実行前(Firefoxで実行しました。GUIで起動中のFirefoxのプロセスしかありません。)
イメージ説明
↓実行中
イメージ説明
↓実行後(バックグラウンドに2つgeckodriverが残っています。これを手動で削除するとタブのクルクルがなくなり値が返ってきます。)
イメージ説明


以下追記
コマンドプロンプトから直接入力した結果
taskkill /im geckodriver.exe /f
エラー: プロセス "geckodriver.exe" が見つかりませんでした。

↓その時のタスクマネージャー
イメージ説明

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんにちは。
Win10 64bit環境で質問文のコードを試してみましたが、geckodriver.exeは残りませんでした。
(なお、問題文のコードにはimport文もつけると、回答者が実行しやすくて親切です)

またgeckodriver.exeを起動した状態で
subprocess.Popen('taskkill /im geckodriver.exe /f', shell=True)を実行して
きちんとkillできることも確認しました。

なぜkillできないのかを調べるには、プロセスが残った状態で
コマンドプロンプトからtaskkill /im geckodriver.exe /fを実行し、結果を確認するとよいでしょう。

投稿2019/01/08 14:09

編集2019/01/08 14:10
firedfly

総合スコア1131

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

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

navca

2019/01/09 03:16

ご回答ありがとうございます。 >なお、問題文のコードにはimport文もつけると、回答者が実行しやすくて親切です ご指摘ありがとうございます。 コマンドプロンプトからtaskkillを実行したところ「エラー: プロセス "geckodriver.exe" が見つかりませんでした。」とでました。 上に以下追記以降にその際のタスクマネージャーも追記しました。 geckodriverとタスクマネージャーにあるので、geckodriverが存在しているのは間違いないと思うのですが。。。
firedfly

2019/01/09 03:41

質問文の改善はどんどんやりましょう(他の回答者が現れるかもしれません)。 そしてtaskkillの不発が原因というところまではわかりましたね。次はtasklistで調べてみましょう。 もしタスク一覧にgeckodriver.exeがないなら、残念ながらtaskkillでは殺せません。 そのときは質問を出しなおしてWindowsマスターに聞いてみると、原因がわかるかもしれません。
navca

2019/01/09 03:48

ご指導いただいた通り、tasklistを打ってみたところgechodriver.exeがありませんでした。質問を改めて投稿し直します。この度はありがとうございました。
navca

2019/01/09 13:38

その後さらに調べたところ、タスクマネージャーのトップ画面でgeckodriverとなっていたものが、詳細ではFirefoxになっていたため、「taskkill /im firefox.exe /f」でkillすることができました。お手数おかけしました。
firedfly

2019/01/09 13:39

ようございました! 順繰りにたどれば解決するものですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問