教わりながら「ブラウザ操作(配列のアクションを順次実行)」を作ってみた
※ 旧タイトル:スマートな指定XPath一括処理が3つめ以降でエラー
当初は質問でした。
ケアレスミスが原因でした。
ppさんに教わって現在重宝しまくってるライブラリの作成に繋がったので、勝手に命名したライブラリ名で検索にヒットするように、投稿のタイトルを差し替えました。
ppさんの回答と、続くコメントがオススメです。
以下、当初の質問です。
指定XPath一括処理です。
おトクな情報のお裾分けのつもりが、スクリプト加工の初級レベルと思われる箇所で躓き、苦戦中です。
ヒントを思いつくようでしたら教えてください。
指定XPath一括処理をご存知のかたは、加工のくだり☆からどうぞ。
課題のくだりは★からです。
ブラウザ操作のライブラリを加工して、「一括クリック」「値の一括取得」「値の一括設定」を使ってきました。
取得はだいたい50くらい、ほかは10くらいの一括処理です。
これを1シナリオ内の複数個所で採用してます。
1ライブラリ内でスクリプトを複製し、変数の末尾に連番を付けただけのチカラワザです。
1ライブラリ×10個より、1ライブラリ内で10個のほうが高速で重宝してます。
先日リリースされたスイートライブラリは、スクリプトの共通部分を使い回す、サブルーチン的な構造になってます。
スマートなので、更なるスピードアップも期待してます。
https://winactor.biz/knowledge/?search=ブラウザ操作
ブラウザ操作(値の取得,3つ)
ブラウザ操作(値の設定,3つ)
ブラウザ操作(値の設定(入力再現),3つ)
きっと「クリック」や「リスト選択」も同じ加工で一括スタイルになるはず。
ちょうど新しいシナリオに着手したところで、既存シナリオの骨格やグループを鋭意横流し中です。
スマートなかたはきっとサブシナリオとかをうまく使いこなしてるんでしょうね。
良い機会なので、チカラワザライブラリを使っていた箇所は、新しいシナリオでは共通部分を使い回すスイートライブラリベースに置き換え中です。
☆加工
さすがに「ブラウザ操作(値の取得,50個)」とかになると、エラー時のデバッグに手間取ると思うので、こう加工しました。
「ブラウザ操作(値の設定(入力再現),3つ)」がモルモットです。
- excute xpath1,value1,"1"
- Sub excute(xpath,value,num)
- ~指定されてます。" & num 'n番目のXPathがブランクであることが分かる
- ~失敗しました。" & num 'n番目の設定する値がブランクであることが分かる
3つめの引数を追加してみました。連番です。2つめなら"2"です。
シナリオを作り込む段階の動作確認では、エラー箇所を把握し徹底的に潰しちゃいたい。
リリース後は1/50のエラーで止まるのは惜しいので、こうする予定です。
- Subの次の行にOn Error Resume Next
- End Subの前の行にOn Error Goto 0
万一値を設定できない欄があっても5つめまで設定、以降は諦めるみたいな惨状にはしない。
6つめがブランクでも、残り50まで走り切る算段。
万が一にもそんなことがないように、念には念を入れて動作確認します。
これらが安定することが確認でき次第、投稿を更新します。
- 追加の引数
- 「クリック」や「リスト選択」等
どなたかが先を越してくれたら、それはそれで助かります。
ここまでだとあまりにも予告編過ぎてアレなので、少し試しました。
★課題
ひとまず「クリック」を先に試す機会がありました。
Ver.7211です。
「クリック」の場合は、2つめの引数を連番にする感じ。
「スマートな一括クリック」。
3つめ以降のクリックに成功せず、、
「~XPathで空白が設定されてます。3」
試行錯誤で、2つまでは安定して成功するものの、3つめが必ずエラーになることを把握。
- チェックボックス4+ボタン1 → 3つめでエラー
- チェックボックス2、チェックボックス2、ボタン1 → 安定して成功する
ひとまず2つまでにセーブしてシナリオを作り込み中。
でも2つだけじゃ物足りなさ過ぎる、、
スマートな2つ一括クリック、、
全然スマートじゃなくて無駄になっちゃうので、スマートじゃないほうの一括クリックを継続採用中。
「ブラウザ操作(値の設定(入力再現),3つ)」は3つめにも成功。
スイートライブラリで「ブラウザ操作(クリック,3つ)」がリリースされてないのはこういう背景があったのかも。
まだトライし始めたばかりなので、わたしのケアレスミスという可能性も拭えず。
原因とかチェックポイント等のヒントをいただけたら助かります。
試されたかた、同じ症状でしょうか。
速すぎるとかなら納得しやすくて、調整もしやすいんですけど。