Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不引发异常的情况下,如何使用Capybara和Selenium测试JavaScript警报的存在?_Selenium_Capybara - Fatal编程技术网

在不引发异常的情况下,如何使用Capybara和Selenium测试JavaScript警报的存在?

在不引发异常的情况下,如何使用Capybara和Selenium测试JavaScript警报的存在?,selenium,capybara,Selenium,Capybara,我正在使用Capybara和Selenium为我正在编写的Cucumber功能驱动Firefox浏览器。(不是黄瓜问题,但碰巧我用的是黄瓜。)我有一个步骤: Then /^I should see a confirmation of the change$/ do expect{page.driver.browser.switch_to.alert}.not_to raise_exception end (真正的实现测试异常的类型,并使用一些魔术来确定我看到的确认是否有正确的文本。为简洁起

我正在使用Capybara和Selenium为我正在编写的Cucumber功能驱动Firefox浏览器。(不是黄瓜问题,但碰巧我用的是黄瓜。)我有一个步骤:

Then /^I should see a confirmation of the change$/ do
  expect{page.driver.browser.switch_to.alert}.not_to raise_exception
end
(真正的实现测试异常的类型,并使用一些魔术来确定我看到的确认是否有正确的文本。为简洁起见,该代码被排除在外。)

我的问题是,为了测试模态对话框的存在,我可能必须提出一个异常。从哲学上讲,这是一个问题,因为这不是异常行为。这很简单

Selenium中有一个
#is_alert_
方法,但似乎没有任何方法可以访问它:

  • page.driver
    给了我一个提示
  • page.driver.browser
    为我提供了一个
    Selenium::WebDriver::driver
    (在我的例子中,它是一个Firefox驱动程序)
  • 这两个对象似乎都无法访问
    Selenium::Client::Base
    ,该模块包括
    Selenium::Client::GeneratedDriver
    模块,该模块定义
在不引发异常的情况下,如何使用Capybara和Selenium测试JavaScript警报的存在?仅给定一个
Selenium::WebDriver::Driver
,是否有方法访问
Selenium::Client:Base

hmmm 我想试试这个:

WebDriverWait wait = new WebDriverWait(driver, 300 /*timeout in seconds*/);
 if(wait.until(ExpectedConditions.alertIsPresent())==null)
      return false;
 else
      return true;
ExpectedConditions
是一个包装类,它实现了
ExpectedCondition
接口中定义的有用条件