2016-05-13 5 views
-2

ID und Xpath ändert sich beim Speichern (Account) für "OK" -Button.So validieren Sie Web-Element, wenn Xpath-Locator in Selen dynamisch ist webdriver

HTML-Code:

<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 nicht konstant ist und es variiert beim Speichern.

Antwort

0

den Code unten verwenden:

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

der obige Code funktioniert nicht finden. – sneha

+0

Gibt es da irgendeinen Rahmen? und welche Ausnahme zeigt es? – noor

+0

Nein, wenn ich ein Konto erstelle, wird es gespeichert und es öffnet sich ein Fenster, das sagt, dass Konto mit bestimmten Details erstellt wurde. Wenn du in diesem Fenster auf "OK" klickst, erscheint ein Fenster mit der Nachricht "E-Mail wurde an Konto-E-Mail gesendet". , Ich muss auf "OK" in diesem bestimmten Fenster klicken, was ich nicht tun kann (wie Xpath/ID ist dynamisch) – sneha

0

Sie können Ihren eigenen XPath-Locator zu finden, um die OK-Taste, um es Textinhalt wie so entwickeln:

//button[.='Ok']

Der erste Teil des XPath Ausdruck - //button - wird alle <button> WebElements innerhalb des aktuell fokussierten Inhalts auswählen.

Der zweite Teil - [.='Ok'] - ist ein Prädikat, das keine WebElements deren genaue Textinhalt herausfiltert ist nicht gleich ‚OK‘.

0

Wenn es die einzige OK-Schaltfläche ist, die auf der Seite verfügbar ist, können Sie wahrscheinlich den folgenden Code verwenden.

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

Else können Sie einen Verweis von Elternfenster nehmen und einen Knopf auf sie, wie unten

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

gibt es zwei" OK "-Schaltflächen in der Seite.Aktuell Wenn ich ein Konto erstelle, wird es gespeichert und es öffnet sich ein Fenster, das sagt, dass Account mit bestimmten Details erstellt wurde. Wenn ich in diesem Fenster auf "OK" klicke, erscheint ein weiteres Fenster mit der Nachricht "E-Mail wurde an Konto-E-Mail gesendet" Klicken Sie auf "OK" in diesem Fenster, was ich nicht tun kann (da Xpath/ID dynamisch ist) – 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

Hallo Sneha, können Sie bitte den folgenden Code versuchen. Wenn es funktioniert, lass es mich wissen: '// div [@class = 'modal-footer']/div [@class = 'bootstrap-dialog-footer']/div [@class = 'bootstrap-dialog-footer -buttons ']/button [text() =' Ok '] ' oder wir können die Nachfahr-Funktion und den Code verwenden:' // div [@class =' ​​modal-footer ']/descendant :: button [text() = 'Ok'] ' –

Verwandte Themen