我已经通过了水豚的帖子+点击提示框,但似乎没有任何工作.以下是我的情景:
场景:当我单击更新按钮时出现一个警告框,其中包含"确定"和"取消"按钮.单击"确定",然后出现新表单.
我正在编写请求规范,即使用rspec和capybara.主要问题是单击警告框:以下是我的代码:
context "update" do
before(:all) do
Capybara.current_driver = :selenium
end
after(:all) do
Capybara.use_default_driver
end
it "update user to trainer" do
click_button('Search')
sleep 3
page.evaluate_script('data-confirm = function() { return true; }')
page.click('OK')
click_button('Upgrade')
end
end
Run Code Online (Sandbox Code Playgroud)
但执行脚本会给我以下错误:
失败/错误:page.evaluate_script('data-confirm = function(){return true;}')Selenium :: WebDriver :: Error :: UnexpectedJavascriptError:左侧无效赋值#./ spec/summary/user_upgrades_spec.rb :30
对于第二个例子即
page.driver.browser.switch_to.alert.accept
我的代码:
context "update" do
before(:all) do
Capybara.current_driver = :selenium
end
after(:all) do
Capybara.use_default_driver
end
it "update user to trainer" do
click_button('Search')
sleep 3
click_button('Upgrade')
page.driver.browser.switch_to.alert.accept
end
end
Run Code Online (Sandbox Code Playgroud)我收到错误:
失败/错误:page.driver.browser.switch_to.alert.accept Selenium :: WebDriver :: Error :: UnhandledError:
请让我知道如何进一步
sol*_*nic 32
您可以单击如下警告框:
page.driver.browser.switch_to.alert.accept
Run Code Online (Sandbox Code Playgroud)
小智 26
这里更新了答案,因为上面的选项似乎都被弃用了.
Capybara :: Session#accept_alert似乎是现在实现此目的的最佳方式,其中触发警报的操作应该在块中传递. http://www.rubydoc.info/github/jnicklas/capybara/Capybara/Session:accept_alert
例如:
page.accept_alert 'Alert text here' do
click_button('Search')
end
Run Code Online (Sandbox Code Playgroud)
B S*_*ven 20
page.accept_alert
Run Code Online (Sandbox Code Playgroud)
使用Selenium为我工作.其他驱动程序可能有自己的语法.
正如Jillian Foley所说,其他答案似乎已被弃用.
chr*_*ill 13
如果要单击警告框的"确定"按钮,请尝试以下行:
page.evaluate_script('window.confirm = function() { return true; }')
Run Code Online (Sandbox Code Playgroud)
不要忘记用javascript标记标记您的测试
it "update user to trainer", js: true do
...
end
Run Code Online (Sandbox Code Playgroud)
并在您的spec_helper文件中启用Capybara.javascript_driver:webkit或:selenium
小智 11
对于WebKit:
page.accept_confirm { click_button "Upgrade" }
Run Code Online (Sandbox Code Playgroud)
对于Selenium:
page.driver.browser.switch_to.alert.accept
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31223 次 |
| 最近记录: |