Robotic Crowd

Robotic Crowd

ブラウザのタブ切り替え

Author: Asao Nakamura 69 views

この記事では、複数のタブ/ウィンドウが開かれるときのタブ/ウィンドウ切り替え方法について紹介します。

【できるようになること】

  • タブ/ウィンドウの切り替え
  • ShowTabs/SwichTabの設定

 

 別タブ/ウィンドウが開かれるサイト

ページの遷移や、フォームの入力などの時に別タブ/ウィンドウが開くケースがあります。

こうしたサイトの動きに対してRobotic Crowdで操作を行う場合、アクティブになっているタブの切り替えを設定しておく必要が出てきます。

 開かれているタブ一覧を取得

ワークフローの実行中に開かれているタブ/ウィンドウの一覧を確認するためには、「ShowTabs」アクションを利用します。

必須パラメータは、ブラウザの指定のみです。

ShowTabsの実行結果は、タブの一覧が取得されます。

# ブラウザを開く
+open_browser_1:
  action>: OpenBrowser
  url: 'https://tutorial.co.jp/blog/'
  lang: 'ja-JP'
  headless: true

# キーを送信(新しいタブでリンクを開くショートカットキー)
+send_keys_1:
  action>: SendKeys
  browser: +open_browser_1
  selector: ':nth-child(5) > .col-md-7 > .post-wrapper > .post-header > .post-title > a'
  keys: ["Control","Enter"]
  ignoreError: true

# 開いているタブを表示
+show_tabs_1:
  action>: ShowTabs
  browser: +send_keys_1
  waitBefore: 2000

 タブ/ウィンドウを切り替える

タブ/ウィンドウの切り替えには、「SwitchTab」アクションを利用します。

ここでは、3つの切り替え方法を順にご紹介します。

  • 何番目のタブ/ウィンドウを利用するかを指定して、切り替えます。

    「0」を入力すると一番古いタブ/ウィンドウが指定されます。タブ/ウィンドウが開かれた順に「1」,「2」… となります。

ShowTabsアクションを組み合わせ、タブ/ウィンドウのタイトルを指定した切り替えができます。

こちらは、スクリプトを使用します。スクリプトの詳細は、下部の「ワークフロー設定内容1」をご参照ください。

  • ShowTabsアクションでタブ/ウィンドウの一覧を取得します。
  • (任意)ShowTabsアクションに実行前待機時間を追加します。タブ/ウィンドウが開き切るまでの待機となります。
  • 取得したタブ/ウィンドウの一覧を変数に保存します。
  • タブ/ウィンドウ一覧を特定のワード・URLで検索します。(RunScript)
  • 検索に一致したタブオブジェクトを、SwitchTabのタブパラメーターに指定します。
 

こちらは、スクリプトを使用せずに、タイトルやURLをもとにタブ/ウィンドウを切り替えます。

以下画像のような形になります。ワークフローのコード(yaml)については、下部の「ワークフロー設定内容2」をご参照ください。


※(任意)ShowTabsアクションに実行前待機時間を指定すると、指定した時間分の待機が可能です。タブ/ウィンドウが開き切るまでに時間がかかる場合に有効です。

# ブラウザを開く
+open_browser_1:
  action>: OpenBrowser
  url: 'https://tutorial.co.jp/blog/'
  lang: 'ja-JP'
  headless: true

# キーを送信(新しいタブでリンクを開くショートカットキー)
+send_keys_1:
  action>: SendKeys
  browser: +open_browser_1
  selector: ':nth-child(9) > .col-md-7 > .post-wrapper > .post-header > .post-title > a'
  keys: ["Control","Enter"]
  ignoreError: true

# 開いているタブを表示
+show_tabs_1:
  action>: ShowTabs
  browser: +send_keys_1
  waitBefore: 2000

# 変数に保存
+store_value_1:
  action>: StoreValue
  key: tab_obj
  value: +show_tabs_1

# スクリプトを実行
+run_script_1:
  action>: RunScript
  code: "let tab = tab_obj.filter(el => /オンライン体験会/.test(el.title));\nreturn tab[0];\n"

# タブを切り替える
+switch_tab_1:
  action>: SwitchTab
  browser: +send_keys_1
  tab: +run_script_1
# ブラウザを開く
+open_browser_1:
  action>: OpenBrowser
  url: 'https://tutorial.co.jp/blog/'
  lang: 'ja-JP'
  headless: true

# キーを送信(新しいタブでリンクを開くショートカットキー)
+send_keys_1:
  action>: SendKeys
  browser: +open_browser_1
  selector: ':nth-child(5) > .col-md-7 > .post-wrapper > .post-header > .post-title > a'
  keys: ["Control","Enter"]
  ignoreError: true

# 開いているタブを表示
+show_tabs_1:
  action>: ShowTabs
  browser: +send_keys_1
  waitBefore: 2000

# 各要素について繰り返す
+for_each_1:
  for_each>:
    tab_obj: +show_tabs_1
    withIndex: tab_index
  _do:

    # オブジェクトのキーの値を取得
    +get_value_with_key_1:
      action>: GetValueWithKey
      object: ${tab_obj}
      key: title

    # 比較する
    +compare_1:
      action>: Compare
      subject: +get_value_with_key_1
      compare_with: 'オンライン体験会'
      method: CONTAINS
      not: false

    # 真のとき
    +if_1:
      if>: +compare_1
      _do:

        # タブを切り替える
        +switch_tab_1:
          action>: SwitchTab
          browser: +send_keys_1
          tab: ${tab_index}

        # 繰り返しを終了する
        +break_if_1:
          break_if>: +compare_1
<タブ>タブ

このページは役に立ちましたか?