0

ブラウザで「ページ表示」後に目的のアクションがうまくいかない場合、ウィンドウ移動やフレーム選択が必要なことが多いです。
躓きがちで慣れと理解に時間を要する。
ブラウザ操作の永遠の課題の1つ。
XPath、ウィンドウ移動、フレーム選択に慣れるまでの繋ぎに、できるまでやらせるスパルタ式の紹介です。

 
ウィンドウ移動(スパルタ式)

変数値設定:カウンタ、1
繰り返し:カウンタ
 例外処理
  正常系
   目的のアクション
   繰り返し終了
  異常系
   次のウィンドウへ移動
待機ボックス:カウンタ

 
フレーム選択(スパルタ式)

変数値設定:カウンタ、1
繰り返し:カウンタ
 文字列の連結(3つ):フレームのXPathを生成
 例外処理
  正常系
   目的のアクション
   繰り返し終了
  異常系
   フレーム選択
待機ボックス:カウンタ

 
目的のアクションの例

  • クリック
  • 値の取得/設定
  • 属性値の取得/設定
  • プロパティ値の取得/設定
  • リスト選択
  • チェック状態取得
  • 表の値取得
  • 要素数取得

 
文字列の連結の案

//frame[ + カウンタ + ]

//iframe[ + カウンタ + ]

 
「frameかiframeのn番目」を1続きのXPathで表現する例

//*/ancestor-or-self::frame[n]
|
//*/ancestor-or-self::iframe[n]

  • 構造を解りやすくするための改行
  • 使う際は改行なしで

ブラウザ関連ライブラリで採用されてるXPathのフォーマットに倣った格好

  • 指定テキストをクリック
  • 指定タグの指定テキストをクリック

https://winactor.com/questions/?q=指定タグの指定テキストをクリックもHTML構造を選ぶ

 
目的のアクション実行(スパルタ式)

「ウィンドウ移動(スパルタ式)」の[目的のアクション]に、サブルーチングループにした[フレーム選択(スパルタ式)」をブチ込むことで、全ウィンドウの全フレームを探し回る

  • 最強か
  • 最適化のうえサブシナリオ化されたら重宝されそう
  • ◎ 正しいXPathさえ判っていればウィンドウやフレームを意識しなくて良い世界
  • ▲ ウィンドウ跨ぎ/フレーム跨ぎでXPathが重複してないことが前提になる
  • ◎ XPathが重複してても、ウィンドウ跨ぎ/フレーム跨ぎで一意になるようにXPathを工夫すれば良い
  • ◎ ウィンドウ跨ぎ/フレーム跨ぎでもXPathが一意なら、「目的のアクション実行(スパルタ式)」は最強のポテンシャルを秘めてる
  • そうでないなら、、
    ウィンドウ移動やフレーム選択を頑張る手間 vs ウィンドウ跨ぎ/フレーム跨ぎでXPathを一意にする手間
    後者がラク感じられるかどうか

 
XPath、ウィンドウ、フレーム関連のコラム

 

ブラウザ操作アクションのエラーをスパルタ式で回避した例

https://winactor.com/questions/question/ブラウザ関連のエラーをスパルタ式で回避してみ-2/

 

サブルーチンよりも、それぞれライブラリ化されてれば助かる人も多そうです。
興味を持ってライブラリ化されたら回答等で紹介いただけると嬉しいです。

  • ウィンドウ移動(スパルタ式)
  • フレーム選択(スパルタ式)
  • 目的のアクション実行(スパルタ式)
anothersolution 質問の投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。