Failed to access modal dialog in Selenium Webdriver

I want to open access to the contents of the model dialog box and access the buttons (Yes, No).

Here is the HTML code looks like

<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> 

One more thing: button buttons are dynamic.

+5
source share
3 answers

I found a solution for this after so much googling ... here is a simple solution for this

 //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(); 

This code solves my problem.

+5
source

Instead of ID try using xpath for example:

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

I hope this helps.

+1
source

In cases where the element identifier is not predefined, the CSS class can be used as a valid selector. This, of course, applies if there is only one element with this class on the page. For several elements, I would suggest that you mark each of them with a different css class, for example:

 <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> 

and then you can use a simple CSS selector like

 button.btn-default.yes 

to achieve the desired element using selenium.

0
source

Source: https://habr.com/ru/post/1232603/


All Articles