2015-09-30 3 views
5

Desidero accedere al contenuto della finestra di dialogo del modello aperta e desidera accedere ai pulsanti (Sì, No).Impossibile accedere alla finestra di dialogo modale bootstrap in Selenium Webdriver

Ecco il codice HTML appare come

<div class="modal-dialog"> 
<div class="modal-content"> 
    <div class="modal-header"><div class="bootstrap-dialog-header"> 
     <div class="bootstrap-dialog-close-button" style="display: none;"> 
      <button class="close">×</button> 
     </div> 
     <div class="bootstrap-dialog-title" id="e6adf6aa-dcbf-4fb8-9935-c083762f2812_title"> 
     Inactivate user 
     </div> 
    </div> 
</div> 
<div class="modal-body"> 
    <div class="bootstrap-dialog-body"> 
     <div class="bootstrap-dialog-message"> 
     Are you sure you want Inactivate user? 
     </div> 
    </div> 
</div> 
<div class="modal-footer"> 
    <div class="bootstrap-dialog-footer"> 
     <div class="bootstrap-dialog-footer-buttons"> 
      <button class="btn btn-default" id="868d2d8a-67f6-4308-a3c8-0246a5d4618c">Yes</button> 
      <button class="btn btn-default" id="23e4d027-ef32-4b58-b8b6-6f95bead2db4">No</button> 
     </div> 
    </div> 
</div> 

più Una cosa è id dei pulsanti sono dinamici.

risposta

5

ho trovato la soluzione per questo dopo tanto googling ... ecco la soluzione semplice per questo

//Switch to active element here in our case its model dialogue box. 
driver.switchTo().activeElement(); 

Thread.sleep(3000); 

// find the button which contains text "Yes" as we have dynamic id 
driver.findElement(By.xpath("//button[contains(text(),'Yes')]")).click(); 

Questo codice risolve il mio problema.

1

Invece ID provare a utilizzare XPath come:

By.XPath("//div[@class='bootstrap-dialog-footer-buttons']//button[text()='Yes']")

Mi auguro che aiuta.

0

Nei casi in cui l'ID dell'elemento non è predefinito, la classe CSS può essere utilizzata come selettore valido. Questo, ovviamente, si applica se c'è un solo elemento con quella classe nella pagina. per più elementi vorrei suggerire che si contrassegna ognuno di loro con diversa classe CSS, come:

<button class="yes btn btn-default" id="868d2d8a-67f6-4308-a3c8-0246a5d4618c">Yes</button> 
<button class="no btn btn-default" id="23e4d027-ef32-4b58-b8b6-6f95bead2db4">No</button> 

e quindi è possibile utilizzare semplice selettore CSS come

button.btn-default.yes 

per raggiungere l'elemento desiderato utilizzando selenio.