0

このようなことをしたいです。

elem1 = document.getElementById(id1);
elem1.click()
// The page has been changed
elem2 = document.getElementById(id2);
elem2.click()

私の問題は、document.documentElement の HTML が変更を完了する前に 2 番目の「getElementById(id2)」が呼び出された場合、id2 を持つ HTML 要素がないため、elem2 の取得に失敗することがあります。(上記コードのjavascript文はすべてSelenium Serverなどのサードパーティから送られてくるもので、文を取得して1つずつ実行するjavascriptループがあります。ループはSelenium Coreのようなものと考えることができます)

Selenium や Watir のようなツールを作成しようとしています。だから私はそれらのツールを使用することはできません。Selenium または Watir には、最初のコマンドの結果としてページが完全に変更されるまで待ってから、2 番目のコマンドを送信する方法があると思います。Webkitで試しているので、window.onwebkittransitionendなどのイベントを試してみましたが、うまくいきませんでした。

promise や async でこの問題を解決できるとは思いません。シーケンスを強制する以上のものが必要だからです。2 番目のコマンドは、単にクリックするだけでなく、レンダリングされた画像の情報を取得するなどの他のコマンドである可能性があるため、2 番目のページが完全に読み込まれているかどうかを確認する必要があります。

ページの変更が完了したかどうかを確認するイベントまたは方法はありますか? あ、残念ながらjQueryは使えません。プレーンなJavascriptでそれを行う必要があります。

私の質問を読んでくれてありがとう。

4

0 に答える 0