Not able to access bootstrap modal dialog in Selenium Webdriver

落花浮王杯 提交于 2021-02-08 14:59:31

问题


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

Here is 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 is id of the buttons are dynamic.


回答1:


I found the solution for this after so much googling... here is the 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.




回答2:


Instead ID try using xpath like:

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

I hope that helps.




回答3:


In cases where ID of the element is not predefined, CSS class can be used as valid selector. That, of course, applies if there is only one element with that class in the page. For multiple elements i would suggest that you mark each one of them with different css class, like:

<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 simple CSS selector like

button.btn-default.yes

to reach the desired element using selenium.



来源:https://stackoverflow.com/questions/32861422/not-able-to-access-bootstrap-modal-dialog-in-selenium-webdriver

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!