現在、Selenium2Libraryをロボットフレームワークで使用して、いくつかのWebテストを自動化しています。現在、Click Element関数を使用してログインボタンのクリックを自動化することに問題があります。
これは私が使用したい要素です:
<a class="transparentBtn loginLink ng-scope" ng-click="commonService.gigyaRaasLogin()" translate="BTN_ADMIN_LOGIN_WATCHLIST">LOGIN</a>
コンソールからコピーした場合、これはxpathです://*[@id="menu"]/div/div[5]/div/div/div[2]/ul/li[2]/a
この要素をクリックしたい場合に使用するロケーターを見つけるのに苦労します。
これらは私がこれまでに試したことのいくつかです:
Click Element css=a.loginLink
Click Element link=LOGIN
一意のCSS(1つの一致するノード)を見つけるか、これを試してください
Wait Until Element Is Visible xpath=//*[@id="menu"]/div/div[5]/div/div/div[2]/ul/li[2]/a 10
Click Element xpath=//*[@id="menu"]/div/div[5]/div/div/div[2]/ul/li[2]/a
もう少し柔軟にすることをお勧めします。柔軟な定義と独自の定義のバランスが取れている場合の良いアプローチ。そうしないと、最小のサイト変更でテストが失敗します。
次の例は、前の例と一致する必要があります。
LOGINテキストを含むリンクに一致
Click Element //a[contains(text(),'LOGIN')]
LOGINテキストを含む任意の要素に一致
Click Element //*[contains(text(),'LOGIN')]
クラス属性が「transparentBtn loginLink ng-scope」と等しい任意の要素に一致
Click Element //a[@class="transparentBtn loginLink ng-scope"]
複数の属性を同時に確認できます
Click Element //a[@class='transparentBtn loginLink ng-scope' and @ng-click='commonService.gigyaRaasLogin()']
Contains()を使用して、クラス属性の文字列部分かどうかを確認できます
Click Element //a[contains(@class,'loginLink')]
タイトルの質問に答えるために、Selenium2Libraryは多くの異なるロケーターをサポートしています。最も表現力のあるものはxpathで、ほぼすべてを検索するために使用できます。 Selenium2Libraryのドキュメント の要素の検索または指定のセクションを参照してください。
あなたの場合、リンクをクリックすると、click link link=LOGIN
は動作するはずです。そうでない場合は、リンクがiframe内にあるか、おそらくCSSによって非表示になっている可能性があります(angularのような一部のフレームワークでは、要素が非表示になり、独自のものに置き換えられます)