カスタム待機条件を定義する際に、セレンのJavaScriptバインディングに問題があります。私はボタンが最初に無効になっているが、最終的に有効になるボタンの機能をテストするテストケースを作成しています。状態間の待機時間は非常に長く(4分)、ページ読み込み時にチュートリアルアニメーションが再生され、ボタンが終了するとボタンが有効になります。selenium-webdriver(JavaScriptバインディング)のカスタム待機状態が機能していません
ボタンのuntil.elementIsEnabled条件を使用しようとしましたが、動作しません。だから、私はカスタム条件を働かせようとしています。
API documentation on until conditionsによると、カスタムイベントがようにコード化することができます。
driver.wait(function() {
return driver.getTitle().then(function(title) {
return title === 'webdriver - Google Search';
});
}, 1000);
その例から、私がtrueに反転する状態で待つようにこのコードを持っている:
const locator = { id: "Button" };
await driver.wait(until.elementLocated(locator));
const button = await driver.findElement(locator);
await driver.wait(async function() {
const attr = await button.getAttribute("enabled");
log.info(model.browser.type + " - " + "Polling attribute value: " + attr);
return await attr === true;
}, 400000);
私がそこに持っているロギング(js-logging npmパッケージです)から、セレンのwebdriverが毎ミリ秒ごとにそのコードをループしていることがわかりました。そして状態は約4分間違っています。しかし、ループは、変数のステータス変更の約2分後にタイムアウト値400000msに達するまで継続します。
私はここで何が欠けていますか?
Javaバインディングでは流暢ではありませんか?私はJavaScriptバインディングを使用しています。私が間違っていない限り、私はjavascript APIのドキュメントの例がfluentWaitの動作をしていると考えています。 私はまだ私の待機コードが機能していないのか分からない。 – Charles