1

私は SeleniumIDE にいますが、javascript を呼び出しています。

これは、他の人にとってもかなり一般的なシナリオのようです。

優れたテスト スイートがありますが、最初に行うことはログインです。

ログアウトしていることを確認し、そうでない場合はログアウトすることからスイートを開始したいと思います。「ログアウト」ハイパーリンクの存在によって、ログインしているかどうかを確認できます

しかし、現在ログインしている場合にのみログアウトをクリックしたいのですが、それ以外の場合は何もしたくありません。まだログインしていない場合、存在しない要素をクリックしようとするとエラーが発生するためです)

したがって、論理的には次のようになります。

if ui element(logout link in my case) exists
  click on logout link
else
  do nothing
end

私は Selenium IDE を使用して javascript を呼び出しています -if then基本的な seleniumIDE では実行できないため、javascript 自体でこれを実行できることを望んでいました。

何かのようなもの:

store    javascript{if ([a with text 'Logout' exists]) then click on it end;}  id1

の代わりにclick on it [this]、次の URL にアクセスしただけでも問題ありません (より脆弱ですが)。

http://my-apps-domain/users/sign_out

しかし、正確な構文はわかりません。

関連する HTML は次のとおりです。

<li><a href="/users/sign_out">Logout</a></li>

存在する場合は、aをクリックします(またはURLに直接アクセスします)。それ以外の場合は何もしません。

可能であれば、jquery 以外のソリューションを見つけたいと思います。

更新: javascript{window.location.replace('http://google.com') }seleniumIDE ウィンドウを閉じて google に置き換えても、テスト自体が実行されている実際のウィンドウには影響しないことがわかりました。

4

2 に答える 2

0

HTML を制御できないため、別の方法でリンクを参照することをお勧めします。URL は、その目的のために非常に信頼できるようです。

var logoutLink = document.querySelector('a[href="/users/sign_out"]');
if(logoutLink != null) {
    window.location.href = logoutLink.href;
}

ページ ナビゲーションは で簡単に実行できるため、クリック イベントを発生させる必要はありませんwindow.location

アップデート:

別のアイデアは、ボタンに を割り当ててから、 selenium でクリックすることidです。

var logoutLink = document.querySelector('a[href="/users/sign_out"]');
if(logoutLink != null) {
    logoutLink.setAttribute("id", "logoutLink");
}
于 2013-06-12T18:10:53.770 に答える