confirm alert window in phantom.js

11,481

Solution 1

As far as I know, Phantom.JS is headless. The only thing you can do is get the context of the alert with

window.onAlert = function(alertText){
    ...
   }

but no more than this I think. You cannot either close (in general) or render (in Phantom.JS) the alert programmatically.

Some sources:
* Render JavaScript alerts with Phantom.JS
* Close alert programmatically

Solution 2

I can't find the other stackoverflow answer that helped me answer this as well but basically you can inject a javascript function that will confirm the alert popup:

Here's my python webdriver implementation:

def example_js_confirmation( self ):
    js_confirm = 'window.confirm = function(){return true;}'    # .js function to confirm a popup
    self.execute_javascript( js_confirm )
    self.find_by_id( 'submit' ).click()
    self.execute_javascript( 'return window.confirm' )  # trigger the injected js that returns true (virtually click OK)

It's on somebody's todo list =) : Selenium Desired Capabilities - set handlesAlerts for PhantomJS driver

Share:
11,481
Alice Polansky
Author by

Alice Polansky

https://vk.com/id4137121

Updated on June 14, 2022

Comments

  • Alice Polansky
    Alice Polansky almost 2 years

    i have this function which find button and click it, but after that alert appears and i need to confirm it using phantom.js

    function() {
      page.evaluate(function() {
        $('.item-list clicked').first().find($('.comment-delete')).find('a').click();
      })
    }
    

    may be i can emulate function which call alert whithout click immediately ? or use function waitFor for waiting this alert?(unlikely this, waitFor waiting only for DOM objects i think so)