2016-05-13 45 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']' –

相关问题