IEの画面更新完了待ちと表示値の取得

2006年、POSACCでの文字列の取得を使って以来、新たな取り組みはなく、暫くUWSCとは縁がありませんでしたが、他に手段を思いつかない事案が発生し、お力をお借りしたいと思います。 やりたいこと クラウドで運用するデーターエントリーで、行を動的に追加する
操作について、Excelの一覧表から登録できる様自動化したい。 行追加の手順は、 1. 追加する行数分の入力枠追加ボタンの押下を繰り返す 2. 追加された入力枠に、Excel表から商品、数量を転記する やってみたこと (UWSCで扱えるブラウザとしてIEを選択しましたがバージョンは11) 行追加ボタン押下を記録し、動作確認。 記録によるため、1行追加毎の完了確認は考慮されていないので、よく使われているIE待ち合わせ関数を用意して同期を試す。
		
	IE = CreateOLEObj("InternetExplorer.Application") 		
	IE.Visible = True 		
	print IE.readyState        // 結果は0		
	sleep(2)		
	print IE.readyState        // 結果は0		
	for 追加回数 = 1 to 10		
	    msgbox(追加回数)		
	    CLKITEM(導入連絡ID, "行追加", CLK_ACC)		
	    ie_wait(IE)		
	next		
	procedure ie_wait( IE )		
	  repeat		
	    sleep( 0.1 )		
	    print IE.busy            // 結果はfalse		
	    print IE.readyState      // 結果は0		
	  until ( ! IE.busy ) and ( IE.readyState = 4 )     // Loopを抜けられません		
	  sleep( 0.2 )		
	fend		
	
ここで、待ち合わせが解けないという問題が発生 IE.busy と IE.readyState の状態をトレースすると、オブジェクト定義以後、IE.readyStateが常に0であることが直接の原因 IEの設定かアプリの問題か手に負えないと判断し、別のアプローチを検討 (ネット上のサンプルコードでも同じ結果なので、スペル違いとかの問題ではないと思います。IE11で非互換が発生しているという記事も気になります。) 別のアプローチ 画面の固定された位置に表示されている「行数」が変わったことを検知して待ちが解けたと判断する 「行数」は「件数」という文字に続いて表示されます 「行数」を特定する識別子を調べて値を取得する方法が望ましいけれど、識別子の調べ方が不明なので、「件数」という文字列の位置情報から、後続する値を取得できないかネットでいろいろ調べて、「.document.forms・・・」など試してはみましたが、いずれも空白が取得されるばかりです ここで、これ以上、独力での進展は無理と判断しました。 教示いただきたいこと 1. 上記、IEの完了待ちを機能させるヒントはないでしょうか 2. 行数を取得する有効な手段は何でしょうか 以上、よろしくお願いいたします。

関連情報:

  1. IEのビジー状態、オブジェクトの状態を取得(busy, readyState)
  2. IEの遷移、履歴操作、ウィンドウを閉じる
  3. COMオブジェクトからInternet Explorerを操作したい
  4. 指定したタグの数を取得する
  5. CSSのボタンを押したい

このエントリーを含むはてなブックマーク Buzzurlにブックマーク Yahoo!ブックマークに登録

コメント

  1. jpress より:

    (投稿者ですが、タグが付いていなく見辛いので、お手数ですが削除お願いします)


このページの先頭へ