2017-08-25 181 views
-1

基本上頁面中有3種保存按鈕。現在,我試圖點擊的按鈕是type="button",其餘類型的保存未定義爲type="button"。對於所有三個保存按鈕LinkText定義爲保存。那麼,有沒有什麼方法可以通過linkText點擊type="button"Selenium:如何通過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(); 

現在,假設在一個頁面中有4保存按鈕,並在另一頁有3保存按鈕。所以,不可能做出一個方法,因爲每次索引都會有所不同。

如果有什麼方法可以通過type="button"找到xpath。每次我想點擊"Save"時,我都會輕鬆製作一個方法並將其調用。

請澄清的情況下通知我。

回答

3

有沒有辦法通過LINKTEXT

其實By.linkText()點擊類型=「按鈕」被使用到只查找<a>元素包含給定文本鏈接,當你試圖找到<button>元素。所以你不能使用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[.='Save」和@類型=‘按鈕’]''' –

0

由於Save按鈕包含class屬性,你可以構造一個xpath如下:

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

我認爲硒不支持複合類名。 – Kapil

相關問題