4

私はRailsの上RSpecのRubyでカピバラ/セレンとクロムのヘッドレスモードを使用しようと試みが確認ダイアログにカピバラクロームヘッドレスの確認ダイアログ

Capybara.register_driver(:headless_chrome) do |app| 
    capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
    chromeOptions: { args: %w[headless disable-gpu test-type window-size=1920x1080] } 
) 

    driver = Capybara::Selenium::Driver.new(
    app, 
    browser: :chrome, 
    desired_capabilities: capabilities 
) 

    driver 
end 

Capybara.server = :puma 
Capybara.javascript_driver = :headless_chrome 



scenario 'delete movie' do 
    login_as user 
    visit edit_public_movie_path(movie) 

    expect(page).to have_selector('span[ng-click="ctrl.deleteMovie()"]') 
    find('span[ng-click="ctrl.deleteMovie()"]').click 

    page.driver.browser.switch_to.alert.accept 

    wait_for_ajax(wait_after: 1) 
    expect(page).to have_content('Click here to upload movie (Max: 500 MB)') 
end 

をクリックしたときにエラーを取得し、このエラー

を持っています
Event movie success delete movie 
Failure/Error: page.driver.browser.switch_to.alert.accept 

Selenium::WebDriver::Error::NoSuchAlertError: 
    no alert open 
    (Session info: headless chrome=59.0.3071.115) 
    (Driver info: chromedriver=2.29.461585 (0be2cd95f834e9ee7c46bcc7cf405b483f5ae83b),platform=Mac OS X 10.12.5 x86_64) 

共通モードではエラーなしで動作します。セレンはヘッドレスモードをサポートしていないか、それを行うには他の方法が必要です。何か案は?

アップデート(解決)

だから、私は多くの時間を費やし、作業環境を見つけます。

プレビューバージョンがbugであるため、クロムの最後のビルドが必要です。あなたはここに

は私のカピバラの設定

Capybara.register_driver(:headless_chrome) do |app| 
    capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
             chromeOptions: { 
              args: %w[headless disable-gpu disable-popup-blocking no-sandbox window-size=1920x1920], 
              binary: "#{Dir.home}/chromium-latest-#{platrofm}/latest/#{chrome_file}" 
             }) 
    driver = Capybara::Selenium::Driver.new(app, 
             browser: :chrome, 
             desired_capabilities: capabilities) 

    driver 
end 

Capybara.server = :puma 
Capybara.javascript_driver = :headless_chrome 
Capybara.default_max_wait_time = 20 
Capybara.server_port = 55305 

def platform 
    if /linux/ =~ RUBY_PLATFORM 
    "linux" 
    else 
    "macosx" 
    end 
end 

def platform_linux? 
    platform == "linux" 
end 

def chrome_file 
    if platform_linux? 
    "chrome" 
    else 
    "Chromium.app/Contents/MacOS/Chromium" 
    end 
end 

あるlinuxまたはMacこれらのスクリプトでそれを得ることができますし、代わりにpage.accept_alert

page.driver.browser.switch_to.alert.acceptを使用する必要があります
+0

人々はあなたの質問に達するためにタグに依存しているので、少なくとも適切なタグを選択してください。 –

答えて

0

同じ問題がありました。 chromeOptionsでdisable-popup-blockingを使用してください。

関連する問題