2017-08-25 16 views
-1

ページには基本的に3種類の保存ボタンがあります。今、私がクリックしようとしているボタンはtype="button"で、残りのタイプの保存はtype="button"と定義されていません.の3つのボタンはすべてSaveと定義されています。だから、type="button"linkTextでクリックする方法はありますか?セレン:LinkTextでボタンのxpathを見つけるには?

HTML:私が試した

<button class="btn btn-md bgm-blue m-r-10 waves-effect" ng-click="updateUser()" type="button">Save</button> 

コード:

List<WebElement> list = Util.getWebDriver().findElements(By.xpath("//*[text()='Save']")); 
System.out.println("SaveButton"+list.size()); ///Returning 3 save button in a page 
list.get(3).click(); 

を今、1ページに4ボタン保存があると、別のページに3ボタン保存があるとします。したがって、各時間インデックスが異なるため、メソッドを作成することはできません。

xpathによって見つけられる方法があればtype="button"である。 "Save"をクリックするたびに、メソッドを作成して呼び出すことが簡単になります。

明確にするためにお知らせください。

答えて

3

linkText実際

By.linkText()でタイプ=「ボタン」をクリックする方法はありますが、<button>要素を見つけるためにしようとしている間、与えられたリンクテキストが含まれているだけ<a>要素を配置するために使用がされています。だから、By.linkText()を使って欲望要素を見つけることができません。私は上をクリックしようとしている

ボタンは、あなたが唯一の望みボタンが属性type="button"が含まれていると言っているとして保存のtype="button"、残りの種類はtype="button"

として定義されていないで、だから、それは非常に簡単です。以下のように他のロケータを使用して、その要素を見つけるために: -

  • By.cssSelector()

    • button[type='button']
    • button[type='button'][ng-click='updateUser()']
    • button.btn.btn-md.bgm-blue.waves-effect[type='button'][ng-click='updateUser()']
  • By.xpath()

    • //button[text()='Save' and @type='button']
    • //button[.='Save' and @type='button']
    • //button[text()='Save' and @type='button' and @ng-click='updateUser()']
    • //button[.='Save' and @type='button' and @ng-click='updateUser()']
+1

パーフェクトな説明を。私がメソッドを使ってどこにでも使用している場合、以下のxpathコードが機能します。 '' '//button[.= '保存'と@タイプ= 'ボタン']' '' –

0

Saveボタンはclassが含まれているとして、次のようにあなたがxpathを構築することができます属性:

findElements(By.xpath("//button[@class='btn btn-md bgm-blue m-r-10 waves-effect'][contains(text(),'Save')]")); 
+0

セレンは化合物をサポートしていないと思いますクラス名。 – Kapil

関連する問題