🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Chrome

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

Python 3.x

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

selenium

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

Chrome extension

Chrome拡張機能

Q&A

解決済

2回答

6758閲覧

seleniumを使ったChromeブラウザの自動操作を行っています。タブ切り替えはできますか?

tiqua_nibio

総合スコア62

Chrome

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

Python 3.x

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

selenium

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

Chrome extension

Chrome拡張機能

0グッド

0クリップ

投稿2019/12/25 11:38

このようなソースコードを書いています。

目的は、SeleniumによるChromeブラウザの自動操作で、タブを複数開いてそれぞれのタブで検索入力を行うというものです。検索→検索結果→新しくタブを開く→…の連続です。

ですが、下記のソースコードでは
・タブは10個まで問題なく開くことができる。
・しかし、検索は1番最初に開いたタブでしか行われない。

なお、拡張機能はここから入手したもので、crxファイルにしてPythonに読み込ませています。これをインストールすることで右上に出てくるMultiLoginボタンは、押すことで新しいタブを開くという機能があります。

URL

1https://chrome.google.com/webstore/detail/multilogin/ijfgglilaeakmoilplpcjcgjaoleopfi?hl=ja

すべてのタブにおいて、検索結果まで行くような方法にできないでしょうか?
少し複雑な質問になっていますが、簡単に言えば、タブが複数あるとき、タブを切り替える方法がわからないです。

Python

1import time 2from selenium import webdriver 3from selenium.webdriver.chrome.options import Options 4import pyautogui # Chrome拡張のアクションボタンクリック用 5 6options = Options() 7# options.add_argument('--headless') 8options.add_argument('--disable-gpu') 9 10# 「拡張機能をパッケージ化」によってMultiLoginをパッケージ化したもの 11ext_path = "1.0.12_0.crx" 12options.add_extension(ext_path) 13 14path = "C:\chromedriver.exe" 15 16driver = webdriver.Chrome(path, options=options) 17 18driver.set_window_position(0, 0) # ブラウザの位置を左上に固定 19driver.set_window_size(600, 740) # ブラウザのウィンドウサイズを固定 20 21for i in range(10): 22 23 driver.get('http://www.google.com/xhtml') 24 time.sleep(2) 25 26 search_box = driver.find_element_by_name('q') 27 search_box.send_keys('ChromeDriver') 28 search_box.submit() 29 time.sleep(2) 30 31# 画面の右上のMultiLoginの拡張機能のボタンを押す=新しいタブが出てくる。 32 pyautogui.click(500, 60, 1, 1, 'left')

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

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

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

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

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

guest

回答2

0

ベストアンサー

switchするのが無難です。
以下の例では3個目のタブに切り替わります。

python

1driver.switch_to.window(window_handles[2])

投稿2019/12/26 01:08

shirai

総合スコア1290

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

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

tiqua_nibio

2019/12/26 04:44

ありがとうございます。 何番目のwindowを指定、すればよかったのですね。 ちなみに driver.switch_to.window(driver.window_handles[i+1]) のようにdriver.をつけないと動きませんでした。
shirai

2019/12/26 11:40

すみません書き間違えていました。
guest

0

タブの切り替えは下記で可能かと思います。

from selenium.webdriver.common.keys import Keys driver.send_keys(Keys.CONTROL + Keys.TAB)

投稿2019/12/25 17:27

john_doe_

総合スコア354

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

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

tiqua_nibio

2019/12/26 04:43

ありがとうございます。 ちなみに、この拡張機能操作時には、検索前の画面がアクティブウィンドウになっているように見えるのですが、いざ操作しようとすると、非アクティブウィンドウの方を操作してしまうのです。ですので、Ctrl+Tabでの切り替えをすると、検索前の画面が非アクティブウィンドウになってしまうという状況なのです。ですので、この方法は使えなかったのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問