R
R
Rusikosan2018-03-12 19:07:02
Java
Rusikosan, 2018-03-12 19:07:02

How Selenium + Java add window.onbeforeunload event handler?

Good time of the day gentlemen. A question. I am weak in autotests, but I got autotests that need to be updated. When I run tests, depending on the situation, sometimes the beforeunload event fires in the browser, which does not allow the browser to be closed and the WebBrowser.quit () method cannot be executed completely. On stackoverflow, I found a suggestion that you need to hang the selenium.runScript("window.onbeforeunload = null;") script , but I can't figure out which part.
There is a base class from which classes with tests are already inherited:

public class FormBaseTest {

    @BeforeMethod(alwaysRun = true)
    public void setUpMethod() {
        String testName = getClass().getDeclaredMethods()[0].getName();
        System.out.println(testName + " started");
        getDriver().manage().window().maximize();
        WebBrowser.implicitWait();
    }

    @AfterMethod(alwaysRun = true)
    public void tearDownMethod() {
        String testName = getClass().getDeclaredMethods()[0].getName();
        System.out.println(testName + " ended");
        System.out.println("");
        WebBrowser.quit();
    }

    @AfterTest(alwaysRun = true)

    public void tearDown() {
        WebBrowser.quit();
    }

I will be glad to help.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
R
Rusikosan, 2018-03-16
@Rusikosan

In general, I overcame this problem like this (part of the code):

@AfterMethod(alwaysRun = true)
    public void tearDownMethod() {
        String testName = getClass().getDeclaredMethods()[0].getName();
        System.out.println(testName + " ended");
        System.out.println("");
        JavascriptExecutor jse = (JavascriptExecutor)getDriver();
        jse.executeScript("window.onbeforeunload = null;");
        WebBrowser.quit();
    }

    @AfterTest(alwaysRun = true)

    public void tearDown() {
        JavascriptExecutor jse = (JavascriptExecutor)getDriver();
        jse.executeScript("window.onbeforeunload = null;");
        WebBrowser.quit();

Maybe someone will help. Good luck

Similar questions
K
KhanTengri2011-06-17 23:56:41
Get from a remote web page?</a> <a class="content__item-button" href="/q/get-title-from-a-remote-web-page"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" class=""> <path fill-rule="evenodd" d="M15 14a1.002 1.002 0 01-1.703.71h-.004l-.003-.01-1.704-1.7H3c-1.104 0-2-.9-2-2V3c0-1.1.896-2 2-2h10c1.104 0 2 .9 2 2v11zM5 6c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1z"></path> </svg> <span class="dark">6</span><span class="dn">Reply</span> </a> </div> </div><div class="content__item"> <div class="content__item-img name-color-P"> <span>P</span></div> <div class="content__item-content"> <div class="content__item-row"> <a href="/q/how-to-solve-the-problem-permission-denied-when-starting-tomcat-from-the-command-line">P_Alexander</a><span>2018-02-17 02:18:21</span></div> <a class="content__item-title similar" href="/q/how-to-solve-the-problem-permission-denied-when-starting-tomcat-from-the-command-line">How to solve the problem (permission denied) when starting TomCat from the command line?</a> <a class="content__item-button" href="/q/how-to-solve-the-problem-permission-denied-when-starting-tomcat-from-the-command-line"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" class=""> <path fill-rule="evenodd" d="M15 14a1.002 1.002 0 01-1.703.71h-.004l-.003-.01-1.704-1.7H3c-1.104 0-2-.9-2-2V3c0-1.1.896-2 2-2h10c1.104 0 2 .9 2 2v11zM5 6c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1z"></path> </svg> <span class="dark">1</span><span class="dn">Reply</span> </a> </div> </div><div class="content__item"> <div class="content__item-img name-color-T"> <span>T</span></div> <div class="content__item-content"> <div class="content__item-row"> <a href="/q/java-suggest-a-library-for-generating-multiple-strings-from-a-template-for-test-data">twinp</a><span>2011-06-22 19:50:03</span></div> <a class="content__item-title similar" href="/q/java-suggest-a-library-for-generating-multiple-strings-from-a-template-for-test-data">Java. Suggest a library for generating multiple strings from a template for test data</a> <a class="content__item-button" href="/q/java-suggest-a-library-for-generating-multiple-strings-from-a-template-for-test-data"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" class=""> <path fill-rule="evenodd" d="M15 14a1.002 1.002 0 01-1.703.71h-.004l-.003-.01-1.704-1.7H3c-1.104 0-2-.9-2-2V3c0-1.1.896-2 2-2h10c1.104 0 2 .9 2 2v11zM5 6c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1zm3 0c.552 0 1 .45 1 1s-.448 1-1 1-1-.45-1-1 .448-1 1-1z"></path> </svg> <span class="dark">2</span><span class="dn">Reply</span> </a> </div> </div> </div> </div> </div> <div class="content find"> <p class="find__p">Didn't find what you were looking for?</p><a class="find__btn" href="#!">Ask your question</a> </div> <div class="find sm"> <p class="find__title">Ask a Question </p> <form class="find__form" action="#!"> <input class="find__input" type="text" placeholder="Ask your question here"> <button class="find__btn" type="submit"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 16 16" class="nBqR1"><path fill-rule="evenodd" d="M12.696 7.256L9.657 4.217a1 1 0 00-1.415 1.414l1.344 1.344H3.949a1.001 1.001 0 000 2h5.637l-1.344 1.343a1.002 1.002 0 000 1.415c.391.39 1.024.39 1.415 0l3.039-3.04A.993.993 0 0013 7.975a.997.997 0 00-.293-.708l-.011-.011z"></path></svg></button> </form> <p class="find__span">731 491 924 answers to any question</p> </div> </div> <aside class="banners"> <p>banners </p> </aside> </div> </main> </div> <script src="/assets/theme/js/highlight/highlight.min.js"></script> <script src="/assets/theme/js/app.min.js?_v=20220404145216"> </script> <script>hljs.highlightAll();</script> </body> </html>