Selenium::WebDriver::Error::UnhandleAlerError:脚本执行失败。打开的模式对话框阻止了该操作
我注意到了一些奇怪的事情。如果我使用Firefox,这很好:Selenium::WebDriver::Error::UnhandleAlerError:脚本执行失败。打开的模式对话框阻止了该操作,selenium,webdriver,selenium-chromedriver,Selenium,Webdriver,Selenium Chromedriver,我注意到了一些奇怪的事情。如果我使用Firefox,这很好: require "selenium-webdriver" # => true driver = Selenium::WebDriver.for :firefox # => #<Selenium::WebDriver::Driver:0x..fc3c6738535bdb898 browser=:firefox> driver.execute_script "window.alert('text');" #
require "selenium-webdriver"
# => true
driver = Selenium::WebDriver.for :firefox
# => #<Selenium::WebDriver::Driver:0x..fc3c6738535bdb898 browser=:firefox>
driver.execute_script "window.alert('text');"
# => "text"
需要“selenium webdriver”
#=>正确
driver=Selenium::WebDriver.for:firefox
# => #
driver.execute_脚本“window.alert('text');”
#=>“文本”
警报弹出窗口打开
如果我对Chrome执行相同操作,则会打开警报弹出窗口,但会出现异常:
driver = Selenium::WebDriver.for :chrome
# => #<Selenium::WebDriver::Driver:0x47f3180ec45394e8 browser=:chrome>
driver.execute_script "window.alert('text');"
Selenium::WebDriver::Error::UnhandledAlertError: Script execution failed. Script: window.alert('text');;
An open modal dialog blocked the operation
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `new'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/default.rb:64:in `request'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:590:in `raw_execute'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:568:in `execute'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:314:in `executeScript'
from /Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/common/driver.rb:209:in `execute_script'
from (irb):14
from /Users/zeljko/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
driver=Selenium::WebDriver.for:chrome
# => #
driver.execute_脚本“window.alert('text');”
Selenium::WebDriver::Error::UnhandleAlerError:脚本执行失败。脚本:window.alert('text');;
打开的模式对话框阻止了该操作
来自/Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:52:in'assert_ok'
来自/Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/response.rb:15:in'initialize'
来自/Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in'new'
来自/Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:59:in'create_response'
来自/Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/default.rb:64:in'request'
来自/Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/http/common.rb:40:in'call'
来自/Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:590:in'raw_execute'
来自/Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:568:in'execute'
来自/Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/remote/bridge.rb:314:in'executeScript'
来自/Users/zeljko/.rvm/gems/ruby-1.9.2-p290@gretel/gems/selenium-webdriver-2.19.0/lib/selenium/webdriver/common/driver.rb:209:in'execute_script'
来自(irb):14
from/Users/zeljko/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in`'
我做错什么了吗
环境:
- Mac OS X 10.7.3
- 火狐10.0.2
- 铬17.0.963.56
- chromedriver_mac_18.0.1022.0
- Ruby 1.9.2p290
- selenium webdriver 2.19.0
ChromeDriver driver = new ChromeDriver();
driver.executeAsyncScript("arguments[0](); alert('Hello')");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
为什么要通过执行脚本触发警报?这在WebDriver中被认为是未定义的行为,因此驱动程序的行为不同也就不足为奇了。@jarib:这只是创建弹出窗口的最简单方法。你是说,如果通过单击页面上的按钮(或类似按钮)触发警报,其行为会有所不同吗?让我试试…@jarib:真的,如果警报是由页面触发的,Chrome和Firefox都没有例外。添加您的评论作为答案,我将接受。:)请更详细地记下这个问题。我必须在这个对话框中单击WebDriver的“接受”。怎样