handle_js_confirm

66 views
Skip to first unread message

Shahbaz I khan

unread,
Aug 15, 2013, 7:00:09 AM8/15/13
to capybar...@googlegroups.com
Gem's 
gem 'cucumber', '1.3.3'
gem 'capybara-webkit', :git => 'https://github.com/thoughtbot/capybara-webkit.git', branch: 'master'
gem 'capybara','2.1.0'

Problem:
There is a js pop-up when I click an image(alt="Controls"), which has two buttons : "Save" and "Remove". It works like a charm on selenium but I just cannot seem to press any buttons with Capy-webkit.

Codes:
page.find(:xpath,'//img[@alt="Controls"]').click
        if ENV['TEST_BROWSER'] == 'headless'
            handle_js_confirm
            #page.evaluate_script('window.confirm = function() { return true; }')
            #page.click('Remove')
            #page.find(:xpath,'//button[@class="tiny-action button negative remove"]').click_
            #handle_js_confirm("Remove")
            #page.driver.confirm_messages
            #page.driver.browser.accept_js_confirms
            #page.driver.browser.reject_js_confirms
            #page.driver.dismiss_js_confirms!         
        else
            find(:button,'Remove').click
        end

Method:  
                  def handle_js_confirm(accept=true)
                          if ENV['TEST_BROWSER'] == 'headless'
                                   page.evaluate_script "window.original_confirm_function = window.confirm"
                                   page.evaluate_script "window.confirm = function(msg) { return #{!!accept}; }"
                                   page.evaluate_script "window.confirm = window.original_confirm_function"
                        else
                                 page.driver.browser.switch_to.alert.accept
                        end
                  end

PAGE-html:
(Attached screen shot)

Any help would be greatly appreciated.

Thank you for reading.

Shahbaz
screen-shot.png

Shahbaz I khan

unread,
Aug 16, 2013, 9:12:59 AM8/16/13
to capybar...@googlegroups.com
Solution:

I had to put this line "Capybara.ignore_hidden_elements = false" before  "page.find(:xpath,'//img[@alt="Controls"]').click"
Then the rest is : 

within(:xpath,'//div[@class="advanced-edition-controls"]') do
        node = page.find(:button,"Remove")
        node.trigger('click')
end

Thank you,

Shahbaz

 
Reply all
Reply to author
Forward
0 new messages