如果在selenium webdriver中xpath定位器是动态的,如何验证Web元素

时间:2016-05-13 09:59:04

标签: selenium selenium-webdriver

每次保存(帐户)时,

ID和Xpath正在更改为“确定”按钮。

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不是常量,在保存时会发生变化。

4 个答案:

答案 0 :(得分:0)

使用以下代码:

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

答案 1 :(得分:0)

您可以设计自己的XPath定位器,通过它的文本内容找到OK按钮,如下所示:

//button[.='Ok']

XPath表达式的第一部分 - //button - 将选择当前焦点内容中的所有<button> WebElements。

第二部分 - [.='Ok'] - 是一个谓词,它会过滤掉任何精确文本内容等于'Ok'的Web元素。

答案 2 :(得分:0)

如果它是页面上唯一可用的OK按钮,那么您可以使用下面的代码。

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

否则你可以参考父窗口并在其上找到一个按钮,如下所示

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

答案 3 :(得分: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..