2016-05-13 42 views
-2

ID和Xpath每次保存(Account)時都會更改「確定」按鈕。如何在selenium webdriver中xpath定位器動態化時驗證Web元素

HTML代碼:

<div class="modal-footer" style="display: block;"> 
<div class="bootstrap-dialog-footer"> 
<div class="bootstrap-dialog-footer-buttons"> 
<button id="fe02d6bd-6058-4871-b0e1-c1e914f64a6a" class="btn btn-  default">Ok</button> 
</div> 
</div> 
</div> 
</div> 

的Xpath:.//* [@ ID = 'fe02d6bd-6058-4871-b0e1-c1e914f64a6a']

「ID」/ XPath是不恆定的並且它在節省時變化。

回答

0

使用下面的代碼:

driver.findElement(By.cssSelector("div.bootstrap-dialog-footer-buttons>button.btn.btn-default")); 
+0

上面的代碼不工作。 – sneha

+0

有沒有框架?它顯示了什麼異常? – noor

+0

不,實際上,當我創建一個帳戶時,它會被保存,它會彈出一個窗口說明帳戶創建與某些細節,並單擊該窗口中的「確定」,它會彈出其他窗口說「電子郵件已發送到帳戶電子郵件」 ,我需要點擊這個特定窗口中的「OK」,這是我無法做到的(因爲Xpath/ID是動態的) – sneha

0

你可以設計出自己的XPath定位器通過它找到OK按鈕的文本內容,象這樣:

//button[.='Ok']

中的XPath的第一部分表達式 - //button - 將在當前重點內容中選擇所有<button> WebElements。

第二部分 - [.='Ok'] - 是一個謂詞,將篩選出其確切的文本內容是等於「確定」任何WebElements。

0

如果它是頁面上唯一可用的確定按鈕,那麼您可以使用下面的代碼。

driver.findElement(By.xpath("//button[contains(.,'Ok')]")); 

否則可以採取父窗口的參考並定位在其上的按鈕,如下

WebElement modalWin = driver.findElement(By.id("modal-window-id")); 
modalWin.findElement(By.xpath("//button[contains(.,'Ok')]")); 
+0

頁面中有兩個」確定「按鈕。實際上當我創建一個帳戶它被保存,它會彈出一個窗口說帳戶創建與某些細節,並單擊該窗口中的「確定」它會彈出其他窗口說「電子郵件已發送到帳戶電子郵件」,我需要點擊「確定」在這個特殊的窗口中,我無法做到(因爲Xpath/ID是動態的) – sneha

0
This below code helps to click OK button in any page. 
    just call this method with parameter saying OK 

    public void buttonClick(String buttonname){ 
    WebElemennt button = driver.findelement(by.xpath("//button[text(),'Ok']")) 
or 
WebElemennt button = driver.findelement(by.cssselector(".btn btn-  default")) 

    for(int i=0; i<button.size;i++) 
    { 
    if(button.get(i).gettext().equalIgnorecase(buttonname)) 
    { 
     button.get(i).click 
    } 
    } 
    } 
Let me know result.. 
+0

嗨Sneha,請你試試下面的代碼。如果它能工作,請告訴我: '// div [@class ='modal-footer']/div [@class ='bootstrap-dialog-footer']/div [@class ='bootstrap-dialog-footer我們可以使用後代函數,代碼是:'// div [@class ='modal-footer']/descendant :: button [text')/ button [text()='Ok']' ()='Ok']' –

相關問題