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

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

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

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

Chrome

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

Python 3.x

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

selenium

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

Q&A

解決済

1回答

11492閲覧

SeleniumでChromiumを操作したい

branch

総合スコア70

Windows 10

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

Chrome

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

Python 3.x

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

selenium

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

0グッド

0クリップ

投稿2020/07/21 10:21

編集2020/07/22 01:44

ご覧いただきありがとうございます.
###実現したいことと諸事情
表題の通り,Seleniumを使ってChromiumを操作したいのですが,Win10上でChromium+Seleniumを使用している人が少ないようで,Web上で検索をかけても見つかりません.
(ラズパイとかは出てきますが,,,そもそもapt-getが使えない+デフォルトブラウザがChromiumでChromeと競合しない&もともとPATHが通っている という点で参考にしかなりません.)

1.Selemiumでchromiumを明示的に指定して操作する方法
2.(Chromeのドライバと同一のもので動作すると踏んでいますが)動作しない場合は動作させる方法

をご教授いただけませんでしょうか.
1については公式リファレンスを確認しましたが,イマイチ理解できませんでした.(英語力の問題?)

というのも,翻訳自動化ツールを作成しているのですが,常駐ツールとして部内の事務用PCに導入させようとしているので,すでにユーザが多いであろうChromeよりはChromiumの方が都合がよいのです.
ChromeとChromedriverのメジャーバージョンが一致している必要があるが,Chromeでは自動アップデートがかかってしまうという点も今回Chromiumでの実装をもくろんでいる理由の一つです.

###できていること
すでにChromeでは動作を確認しております.
以下のコードを実行するとChromeが起動し,最小化し,入力してある日本語を一文ごとに翻訳し,翻訳結果をprintしてくれます.ヘッドレスモードに関しては社内proxyの問題か,クラッシュするので最小化で対応しています.

ご検証いただける場合は事前にpip install chromedriver_binary==84.0.4147.30.0を実行してください.
詳しくはこちらが参考になるでしょう.

Python

1import time 2import urllib.parse 3import chromedriver_binary 4from selenium import webdriver 5from selenium.webdriver.chrome.options import Options 6from bs4 import BeautifulSoup 7from time import sleep 8 9class Translator: 10 def __init__(self): 11 self.options = Options() 12 self.browser = webdriver.Chrome(options=self.options) 13 self.browser.minimize_window() 14 self.browser.implicitly_wait(2) 15 16 def jp2entrans(self, text): 17 text_for_url = urllib.parse.quote_plus(text, safe='') #URLから翻訳 18 url = "https://translate.google.co.jp/#ja/en/{0}".format(text_for_url) 19 self.browser.get(url) 20 21 wait_time = len(text) / 50     #翻訳待ちのタイムアウト 22 time.sleep(wait_time) 23 24 soup = BeautifulSoup(self.browser.page_source, "html.parser") #翻訳結果の抽出 25 ret = soup.find(class_="tlid-translation translation") 26 27 return ret.text 28 29 def quit(self): 30 self.browser.quit() 31 32 33translator = Translator() 34 35orig = "最近暑いですね.マスクをつけていると死んでしまいそうです." 36origs = orig.split(".") 37 38for i,txt in enumerate(origs): 39 txt += "." 40 en_txt = translator.jp2entrans(txt) 41 42 if i < len(origs)-1: #最後の一文は".."になるのでスキップ 43 print(en_txt) 44 45translator.quit()

実行結果はIt's been hot recently.It seems that you will die if you wear a mask.となります.
###環境とか
*Windows10
*Python3.8.4
*Google Chrome 84.0.4147.89 →C:\Program Files (x86)\Google\Chrome\Application
*Chromium 84.0.4147.0デスクトップ\chrome-win\chrome.exe
(解決後追記)保守性向上のため移動しました.C:\Program Files\chrome-win\chrome.exe
前述の通り,メジャーバージョンを一致させています.置き場所に関しては現段階で特に指定はありません.

どうぞよろしくお願いいたします.

####解決後のコード

Python

1def __init__(self): 2 self.options = Options() 3 self.options.binary_location = "C:\Program Files (x86)\chrome-win\chrome.exe" #これを追加いました. 4 self.browser = webdriver.Chrome(options=self.options) 5 self.browser.minimize_window() 6 self.browser.implicitly_wait(2)

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

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

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

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

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

otn

2020/07/21 10:53

バージョン管理上の問題であれば、Firefoxを使うとか。
branch

2020/07/21 10:56

ご意見ありがとうございます. 最終的にはFireFoxやOpera(ドライバあるのか??)あたりで実装しようとは思いますが,使い慣れたChromeであれば私の開発もはかどりますので,,, 一週間ほど回答を募集してみてからかな,と思っています.
Helloc

2020/07/21 20:38

binary_location で Chromium の PATHを 指定してみて下さい 因みに Opera では Launcher.exeではなく opera.exeです
guest

回答1

0

ベストアンサー

これで どうでしょうか?

Python

1def __init__(self): 2 self.options = Options() 3 self.options.binary_location = 'Chromium のPATH' 4 self.browser = webdriver.Chrome(executable_path ='chromedriver.exe のPATH' , options=self.options) 5 self.browser.minimize_window() 6 self.browser.implicitly_wait(2)

投稿2020/07/21 20:24

編集2020/07/21 20:26
Helloc

総合スコア16

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

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

branch

2020/07/22 01:01

ご回答ありがとうございます.少し朝からバタついてしまって,確認が遅くなりました. ご教授いただいた方法で実現できました!ありがとうございます. chromium.exeは.options.binary_locationで指定すればよいのですね! 当方の環境ではwebdriverのexecutable_pathに関しては不要でした.import chromedriver_binaryでモジュールを指定しているからかと思います. 情報共有のために質問文末尾に動作したコードを追記させていただきます. また,追記修正依頼の項にも投稿していただき,ありがとうございます. また機会がございましたら,よろしくお願いいたします.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問