1

Ver.7211で、2つのChromeウィンドウを使い分けてみました。
わたしはChromeを使いますが、ブラウザ関連ライブラリを使うEdgeやFirefoxでも有効と思われます。

 

結論

  • ブラウザ名の使い分けで2つのChromeウィンドウを使い分けることができる

 

試すきっかけになったスレッド

https://winactor.com/questions/question/chrome-任意のウィンドウへ移動-スクリプト改変windowhandle→windowti/

 

テストに使ったページ

ブラウザ関連ライブラリを使用して、認証画面にログインするサンプルシナリオ
https://winactor.biz/samplescenario/2020/09/15_3171.html

login.html
result.html

 

テストに使ったシナリオ

グループ1
 Chrome起動:browser_chrome
 Chromeページ表示:login.html
 文字列設定(Chrome)://input[@name="user"]
 文字列設定(Chrome)://input[@name="pass"]
 ウィンドウタイトル取得:ウィンドウタイトル
 ウィンドウハンドル取得:LOGIN画面
 待機ボックス

グループ2
 Chrome起動:browser_chrome2
 Chromeページ表示:result.html
 値の取得://p//b、取得した値2
 ウィンドウタイトル取得:ウィンドウタイトル2
 ウィンドウハンドル取得:LOGIN結果画面
 待機ボックス:ウィンドウタイトル2、LOGIN結果画面、取得した値2

グループ3
 任意のウィンドウへ移動:browser_chrome、LOGIN画面
 クリック(Chrome)://input[@type="submit"]

グループ4
 任意のウィンドウへ移動:browser_chrome2、LOGIN結果画面
 値の取得://p//b、取得した値2
 待機ボックス:取得した値2

  • ※ Chromeの文字入りパーツは自動記録で生成されたもの

結果

  • グループ1の2の後、3と4を何度試しても、順番を入れ替えても成功し続ける
  • result3.htmlと、グループ2と4のコピーグループを作ったら、3つのChromeウィンドウを縦横無尽に行き来して制御できた

マニュアルの関連箇所引用

5.1. ブラウザ起動

ブラウザを起動する際に使用します。ブラウザを起動する際に、「ブラウザ名」を付けます。
以降、そのブラウザを操作する場合は、「ブラウザ名」を指定して操作することになります。

起動したブラウザは、シナリオの実行が完了しても画面上に残り続けます。
シナリオの実行が完了した後も、WinActor を終了させるまでは、ブラウザ名が有効になっており、部分実行や別のシナリオの実行で、そのブラウザを操作することができます。

意訳

  • ブラウザ名を使い分けることで、複数のChromeウィンドウを自在に操作できる

気づき

  • 部分実行・・・・・・・・作成時のテスト/デバッグで使えるということ
  • 別のシナリオの実行・・・これはポテンシャルを秘めていそう(未テスト)

テストを経ての所感

  • 取得したウィンドウハンドルを格納する変数名を識別しやすい名前にしておけば、シナリオ作成やデバッグが効率的になるはず

 

Ver.6系時代に見出し済みのノウハウ

  • ブラウザ名を使い分けていた

https://winactor.com/questions/question/2つのchromeウィンドウを使い分けてみた/

  • ただ、ブラウザ名の使い分けだけでは、複数のChromeウィンドウの使い分けに失敗する場面があり、自動記録と手動作成でブラウザ名を使い分けることで安定させた経緯がある
  • Ver.6系時代にこの設定で作ったシナリオは、7系でもそのまま動いている

注意

  • Ver.7系では、ブラウザ名の変数に値が入ってないとエラーになった
  • 値が半角英数でないとエラーになった
  • Ver.6系で変数に値を入れずに使っていたかたはハマるポイント

新しいタブ(Ctrl+T)+「次のウィンドウへ移動」の情報

  • Ver.6系時代のスレッドで、スクリプト探究者さんから、新しいタブ(Ctrl+T)による攻めかたのサイトを紹介いただいた

[WinActor]Chromeで複数サイトを制御する | わんすけに聞いてみる
https://yizm.work/winactor/winactor_chrome_new_tab/

【新】新しいChromeウィンドウ(Ctrl+N)+「次のウィンドウへ移動」の情報

  • Ctrl+Nで開いた新しいChromeウィンドウも、「次のウィンドウへ移動」でウィンドウ名を引き継ぐことで、「ページ表示」から制御を続けることができた

 

1つのウィンドウ名を引き継ぐ/使い回すことと複数のウィンドウ名を使い分けることの比較

共通

  • 時分割処理
  • XPathや変数の設定で、特に優劣は見当たらない

1つのウィンドウ名を引き継ぐ/使い回す場合

  • ◎「次のウィンドウへ移動」で順送りで乗り移れる(シンプル)
  • ▲ 極端な例で、10ウィンドウの8番目から2番目に乗り移りたいときは、地道に工夫することになりそう
  • ※ 順送りを意図的に失敗させることができるなら、オプションにある最初や最後のウィンドウにはダイレクトに乗り移ることができるのかも

複数のウィンドウ名を使い分ける場合

  • ◎ 常に目的のウィンドウにダイレクトに乗り移れる
  • ▲「ウィンドウハンドル取得」を経ておく必要がある
  • ※ 5ウィンドウ以上を使い分ける場面では、メリットが手間を上回りそう
anothersolution 質問の投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。