2015-09-10 30 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 

非常感谢汤姆·沃波尔,你的帮助是非常赞赏