質問: driver.window_handles driver.switch_to_window(allHandles[2]) ``` ### 試したこと ページCを開いた後、printでhandleを全て表示させてみたら A,B,Cと見かけ上は3つタブが開いているのに 2つしかhandleがありませんでした。 また、ページCを開いた後、そのままdriver.getで適当な サイトへのアクセスを試みると、ページBがそのサイトに変化しました。 よく見てみると ログイン後ページBのURLは ``` http://192.168.1.8/hogehoge/ ``` ページCのURLは ``` http://192.168.1.8/hogehoge/?mode=month ``` と非常に似ています。 ページC、ログイン前ページB、ログイン後ページB で それぞれctrl+Uキーを押すと同じソースコードが表示されます。 それぞれF12キーを押すと異なるソースコードが表示されます。 ### ご質問事項 ソースコードを見ていると、「Ajax」や「〜.js」などの文字があったので、 十中八九JSを用いてページCは作成されていると思うのですが、 いかんせんJSはほぼ触れたことがないので、 分析の仕方もよくわかっておりません。 なんとかしてページCの要素を取得したいのですが、 こういうことを調べてみるといいというような 役立つ情報をご教授いただけないでしょうか。 また、今回どのような事態が起こっているため ページCにhandleが割当てられなかったかを 推測していただけないでしょうか。
回答: ページCにて手動でプルダウンを選択すると、 URIが変わり目的のデータが表示されますが、 ページCをseleniumにて表示した後、 ``` driver.get("ページCプルダウン手動選択時のURI") ``` とやるとページBが「ページCのプルダウン選択後画面」に変化して、 目的のデータの表示に成功しました。 JavaScriptはよく分からないままですが、 とりあえず上手くいきました。 どうも調べたところによると親画面と子画面という概念があって、 同じhandleを共有しているのではないかと思いますが、 今は不要なので深い詮索はしないでおきます。