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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

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

解決済

selenium python  ウインドウの切り替えができない。

hikaa
hikaa

総合スコア19

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

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

1回答

0評価

0クリップ

710閲覧

投稿2018/08/14 11:53

編集2018/08/17 06:13

以下のように株価のスクレイピングを行おうとしていますが、ウインドウの切り替えがうまくいきません。なぜでしょうか?ウインドウのデータは習得できているはずなのですが・・・。

よろしくお願いします。

以下エラーコード

 oSuchWindowException Traceback (most recent call last)
<ipython-input-131-fafd9a338816> in <module>()
----> 1 sikomi1(numbers)

<ipython-input-129-96a41ed9cde1> in sikomi1(numbers)
29 while num <len(numbers): #ブラウザ更新して、初値が付いたら
30 print(wh[num])
---> 31 wd.switch_to_window(wh[num])
32 wd.refresh()
33 sine[num] = wd.find_element_by_xpath("//div[@id='detail']/div[2]/div[2]/dl/dd/strong").text

~\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\webdriver.py in switch_to_window(self, window_name)
777 """
778 warnings.warn("use driver.switch_to.window instead", DeprecationWarning)
--> 779 self._switch_to.window(window_name)
780
781 def switch_to_frame(self, frame_reference):

~\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\switch_to.py in window(self, window_name)
113 return
114 data = {'name': window_name}
--> 115 self._driver.execute(Command.SWITCH_TO_WINDOW, data)
116
117 def _w3c_window(self, window_name):

~\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\webdriver.py in execute(self, driver_command, params)
318 response = self.command_executor.execute(driver_command, params)
319 if response:
--> 320 self.error_handler.check_response(response)
321 response['value'] = self._unwrap_value(
322 response.get('value', None))

~\AppData\Roaming\Python\Python36\site-packages\selenium\webdriver\remote\errorhandler.py in check_response(self, response)
240 alert_text = value['alert'].get('text')
241 raise exception_class(message, screen, stacktrace, alert_text)
--> 242 raise exception_class(message, screen, stacktrace)
243
244 def _value_or_default(self, obj, key, default):

NoSuchWindowException: Message: no such window
(Session info: chrome=68.0.3440.106)
(Driver info: chromedriver=2.35.528161 (5b82f2d2aae0ca24b877009200ced9065a772e73),platform=Windows NT 10.0.17134 x86_64)

Message: no such window

と出てしまいます。

以下ソースコード

python

def sikomi1(numbers): wh = [] #ウインドウ番号 sikomi1_trigger = [] sine,genzai,zenjitune = [],[],[] num = 0 wd = web.Chrome() wait = wd.implicitly_wait(10) # ブラウザ起動 while num < len(numbers): #個数分、ブラウザ起動 wd.get("https://finance.yahoo.co.jp/") wd.find_element_by_name('query').click() wd.find_element_by_name("query").clear() wd.find_element_by_name("query").send_keys(numbers[num]) wd.find_element_by_id("searchButton").click() sine.append(wd.find_element_by_xpath("//div[@id='detail']/div[2]/div[2]/dl/dd/strong").text) zenjitune.append(wd.find_element_by_xpath("//div[@id='detail']/div[2]/div/dl/dd/strong").text) num += 1 wh.append(wd.current_window_handle) #ウィンドウ番号の習得 if num == len(numbers): print(wh) break else: wd= web.Chrome() num = 0 while num <len(numbers): #ブラウザ更新して、初値が付いたら print(wh[num]) **__wd.switch_to_window(wh[num])__**  ここがおかしいはずですが・・ wd.refresh() sine[num] = wd.find_element_by_xpath("//div[@id='detail']/div[2]/div[2]/dl/dd/strong").text zenjitune[num] = wd.find_element_by_xpath("//div[@id='detail']/div[2]/div/dl/dd/strong").text try: sine[num] = int(sine[num].replace(',','')) zenjitune[num] = int(zenjitune[num].replace(',','')) josyo[num] = sine[num]/zenjitune[num]*100-100 print(josyo[num]) num += 1 wd.switch_to_window(wh[num]) except: nun += 1 wd.switch_to_window(wh[num])

実行結果

['CDwindow-8A8D9A9BE0F1B07B14027E7A1468EA5C', 'CDwindow-9D725EAE0F62DBD1390ACC33DB00C3D2']
CDwindow-8A8D9A9BE0F1B07B14027E7A1468EA5C

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

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