現在、MochaでSelenium-webdriverを使用しています& JavaScript環境でChai &偽の値を返す方法を探していますアイテムはDOMに存在しません。基本的にユーザーがログインしているかどうかを確認します。Mocha/Chaiを使用したセレン - 偽を返す方法はDOMに存在しない項目です
ログインしている場合は、次のものがDOMに存在します(ログインしていない場合は存在しません)。
<a class="account-panel-controls__link" role="link" id="sign-out-nav" data-log-out="">Sign out</a>
私は、そうでない場合、私は他のスニペットは、上記しない場合にのみ存在する何か他のものを(クリックしたい、それが存在する場合、それをクリックし&存在するかどうかを確認する方法を探しています)。
<a class="account-panel-controls__link" role="link" id="registration-sign-in-nav" data-log-out="">Sign in</a>
私は次のいくつかのバリエーションを試してみたが、それはどこにも私を得ていないです。 Id 'sign-out-nav'を持つ要素が最初に存在する場合はうまく動作しますが、そうでなければその要素を見つけることができなかったというテストは失敗します(DOM内にないので推測しますか? )。
driver.findElement(By.id('sign-out-nav')).isDisplayed().then(function (displayed) {
if (displayed) {
driver.findElement(By.id('sign-out-nav')).click();
}
else{
driver.findElement(By.id('registration-sign-in-nav')).click();
}
});
私はポスト&の数を検索してきた、それは0上だが、その方法を実行するために何かを得ることができない場合&が見て).getSize(のようなものを試してみました。私はまた、 'findElements'と.lengthを併用しようとしましたが、[Object object]の値と1の長さを返しますので、値を区別することはできません。
紛失しているものがありますか?ページ要素を検索しようとしたとき
おかげ
HTMLの要素がサーバーから送信されていますか?それとも、JavaScriptライブラリによって作成されたものですか?これは重要なことです。そのテクニックは、場合によって異なります。前者の場合は、要素を待つのをスキップすることができます。なぜなら、要素をテストするときに必然的にページに入るためです。 (そしてyes、 'driver.findElements'を使うとうまくいきます。)後者の場合、要素を待たなければなりません。 – Louis