【发布时间】:2011-10-18 19:57:17
【问题描述】:
我已经浏览了 capybara + click on alert 的帖子,但似乎没有任何效果。以下是我的场景:
场景:当我点击更新按钮时,会出现一个警告框,其中包含“确定”和“取消”按钮。单击“确定”,然后出现新表单。
-
我正在编写请求规范,即使用 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但是执行脚本给了我以下错误:
失败/错误:page.evaluate_script('data-confirm = function() { return true; }') Selenium::WebDriver::Error::UnexpectedJavascriptError: 无效赋值左侧 # ./spec/requests/ 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
我得到错误:
失败/错误:page.driver.browser.switch_to.alert.accept Selenium::WebDriver::Error::UnhandledError:
请告诉我如何进行下一步
【问题讨论】:
-
您不能用破折号命名 JavaScript 变量。
data-confirm = function ...是非法的。它看起来像(foo - bar) = function() { ... }。那是left-hand side # ...user_upgrades_spec.rb:30错误。用 camelCase 命名您的 JavaScript 变量。