私のウェブサイトでセレンの待ち時間を改善するには、特定のテーブルの描画が終了したかどうかを確認する必要があります。セレンでDOMにjavascriptの変数と関数を挿入
私が調べているサイトでは、datatables.netを使用して、描画前と描画後の両方のイベントハンドラを提供しています。
私のjavascriptのコードは
var isDrawn;
var table = $("#CustomField-443c6726-05c3-48d0-8dfe-c1a26d749cdf").DataTable();
table.on('preDraw', function() {
console.log('Redraw started at: ' + new Date().getTime());
isDrawn = false;
});
table.on('draw', function() {
console.log('Redraw finished at: ' + new Date().getTime());
isDrawn = true;
});
function returnDrawStatus() {
console.log(isDrawn);
return isDrawn;
};
私はクロームのdevのツールでコンソールウィンドウにこれを貼り付ける場合は、イベントハンドラが接続されているようだ、と私は「isDrawn」にアクセスすることができます...次のようになります。変数と 'returnDrawStatus()'関数があります。
セレンのjavascriptエグゼキュータを使用して同じことをしようとすると、イベントハンドラが添付されます(セレンスクリプトを一時停止してテーブルの順序を変更するとコンソールログメッセージが表示されます)が、これは、スクリプト文字列変数は、returnDrawStatus()という値では、JavaScriptを実行する方法である
System.InvalidOperationException occurred
HResult=0x80131509
Message=unknown error: returnDrawStatus is not defined
..私は次のエラーを取得するよう「IsDrawn」は、
internal static bool ExecuteJavascriptReturn(IWebDriver driver, string script)
{
var result = ((IJavaScriptExecutor) driver).ExecuteScript(script);
return (bool)result;
}
TLDR
- 私が定義されている場合は、スクリプト内の変数や関数は、彼らが後の時点でセレンjavascriptのエグゼキュータとアクセスすることはできませんなぜ? (なしページ更新)私はセレンを経由して
おかげ