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

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

解決済

2回答

38724閲覧

Seleniumで既に開いているウィンドウを取得したい

kota_sailing

総合スコア11

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グッド

1クリップ

投稿2018/08/29 10:14

編集2018/08/29 10:15

お世話になります。

Seleniumでブラウザの自動操作プログラムを作成しています。
ブラウザ操作中、一部だけをプログラムで自動処理したいです。

たとえば、航空会社サイトでチケットの選択までは
自分でブラウザを操作したいが、その後の決済手続きはプログラムで自動化したい、等の運用を想定しています。

この様なとき、プログラムに操作中のウィンドウを制御させる良い方法はないでしょうか?

プログラム上で起動したブラウザしかプログラムで処理できないのではと懸念してます...

もし上記懸念が正のときは、代替案として
下記のような挙動ができても嬉しいです。

1.プログラムを実行してブラウザを起動する
2.何かしらの方法で実行中にユーザが操作できるようにする
3.何かしらの入力によってプログラムの続きの処理が実行される

説明不足の部分ありましたらご指摘ください。
よろしくお願いします!

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

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

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

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

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

guest

回答2

0

別の方法としては、pyautoguiを使ったりします。 

参考リンク:PyAutoGuiで繰り返し作業をPythonにやらせよう

無理やり感はありますが、マウスやキーボードそのものを操作するので、直感的で好きです。
画像認識機能もあるので、ボタンの位置とかも特定できます。

python3

1import pyautogui as pa

投稿2018/08/30 13:07

編集2018/08/30 13:09
omoiyari.keita

総合スコア136

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

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

kota_sailing

2018/09/01 04:59

回答ありがとうございます! Pyautogui調べてみましたがこれはとても便利ですね・・・。 Xpathを利用するとhtml構造が変更になったときに意図した実行にできなくなるので、UIベースで要素を探せるのは利用場面多そうに感じました!
guest

0

ベストアンサー

switch_to_windowを試してみてはどうでしょうか。

python3.x

1from selenium import webdriver 2from selenium.webdriver.common.keys import Keys 3import pprint 4 5driver = webdriver.Chrome('pathtodriver') 6driver.get( 'https://www.yahoo.com' ) 7time.sleep(1) 8driver.find_element_by_name('p').send_keys('Selenium Python3') 9driver.find_element_by_name('p').send_keys(Keys.ENTER) 10time.sleep(1) 11 12driver.find_element_by_css_selector('#web > ol > li:nth-child(1) > div > div > h3 > a').click( ) 13pprint.pprint( driver.title ) 14driver.switch_to.window( driver.window_handles[1] ) # go next window 15pprint.pprint( driver.title ) 16driver.switch_to.window( driver.window_handles[0] ) # go back window 17pprint.pprint( driver.title )

投稿2018/08/29 13:59

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

kota_sailing

2018/08/29 14:45

ご回答ありがとうございます。 追加で質問させてください。 switch_to_windowで調べてテストしてみました。 http://www.seleniumqref.com/api/python/window_get/Python_window_handles.html すると、 ・プログラム実行時に立ち上げたウインドウは driver.window_handlesで識別しますが、 ・既に立ち上げていた他のブラウザは識別してくれないようです switch_to_windowをどのように活用すれば当初の質問内容が実現できるか、 理解が悪く恐縮ですがご教示いただきたいです。 よろしくお願いします。
退会済みユーザー

退会済みユーザー

2018/08/29 14:56

眠いため、試験を行わず回答します。ご了承ください。 また、seleniumが起動させていないwindowをコントロールするということは経験がなく回答できません。 全てseleniumの支配下で作業することが前提で案を出します。 任意のwindowで指定の状態になったところでwhileで無限ループを実行し、条件を満たすまでループから抜けれない状態を発生させるというのはどうですか。
kota_sailing

2018/08/30 12:57

アイディアありがとうございます! 下記のようにexitの標準入力をきっかけに次のコードを読む、という処理を追加したことで その間は手動で操作が行えるようになりました! ```python while input() != "exit": print("loop") ```
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問