2015-09-10 127 views
0

我使用黃瓜來運行測試,我使用PhantomJS(poltergeist)和Selenium WebDriver。我的一個測試是通過超鏈接重定向到新窗口。水豚 - Poltergeist和硒

有沒有辦法,我可以寫成用於導航到一個窗口,我的步驟定義說的方式:如果使用騷靈,運行此行代碼其他人遇到這樣一個(硒爲默認)?:

例子:

當硒的瀏覽器:

within_window(->{ page.title == 'Title' }) do 
    expect(current_url).to eq('URL') 
    page.driver.browser.close 
end 

當騷靈:

new_window = window_opened_by { click_link 'Something' } 
within_window new_window do 
    # code 
end 

回答

2

您可以基於以下條件上Capybara.current_driver

if Capybara.current_driver == :selenium 
    do the selenium things 
else 
    do the poltergeist things 
end 
+0

感謝您的評論,我已經試過,但到目前爲止沒有運氣。它不會執行if語句 – Tom

+0

在您的代碼或page.mode中,當前Capybara.current_driver的值是什麼? –

+0

這是在page.mode。在Poltergeist中運行時,它仍然試圖運行硒代碼。我正在嘗試一種不同的方法,因爲我標記了測試@javascript並設置了我的capybara.javascript_driver =:chrome,但它在Firefox中運行瀏覽器,所以沒有太多的運氣。 – Tom

0

我知道了工作的價值,原來我沒有被正確執行的騷靈的代碼。我的代碼是:

if Capybara.default_driver == :selenium 
    within_window(->{ page.title == 'TITLE' }) do 
    expect(current_url).to eq('URL') 
    page.driver.browser.close 
    end 
else 
    sleep 1 
    new_window = page.driver.browser.window_handles.last 
    within_window new_window do 
    expect(current_url).to eq('URL') 
    end 
end 

非常感謝湯姆·沃波爾,你的幫助是非常讚賞