javascript - 强制浏览器结束当前步骤

标签 javascript cucumber watir

需要:

使用 Cucumber 1.0.1Watir 1.9.2,我需要执行 javascript 代码 以便专有门户执行一些操作导航。

问题:

我可以使用以下代码执行 JS 代码:

def execute_js(js_code)
  @browser.goto("javascript:#{js_code};void(0)")
end

execute_js("doNavigate()")

通过这样做,导航会按预期完成,但 Watir 不会重新控制浏览器。

我在寻找什么:

我正在寻找一种解决方案,让 Watir 在 “javascript goto” 之后重新控制浏览器。

经过测试的备选方案:

@browser.execute_script('alert("toto");')

给我这个:

  execScript
      OLE error code:80070005 in <Unknown>
        Access Denied.

      HRESULT error code:0x80020009
        An exception occurred. (WIN32OLERuntimeError)
  ./features/lib/portal.rb:110:in `tln_main_tab'

本地精华:

  • Ascii85 (0.9.0)
  • 生成器 (3.0.0)
  • bundler (1.0.15)
  • capybara (1.0.0)
  • 子进程 (0.1.9)
  • 公共(public)服务 (1.9.2)
  • cucumber (1.0.1)
  • diff-lcs (1.1.2)
  • ffi (1.0.9 x86-mingw32)
  • 防火墙 (1.9.2)
  • fuubar- cucumber (0.0.12)
  • 小 cucumber (2.4.5 x86-mingw32)
  • 锄头(2.10.0)
  • json (1.5.3)
  • json_pure (1.5.3)
  • mime 类型 (1.16)
  • nokogiri (1.5.0 x86-mingw32)
  • pdf 阅读器 (0.9.0)
  • 大虾(0.11.1)
  • 机架 (1.3.0)
  • 机架测试 (0.6.0)
  • 耙子(0.9.2)
  • 自动化(0.6.2)
  • rspec (2.6.0)
  • rspec 核心 (2.6.4)
  • rspec-expectations (2.6.0)
  • rspec 模拟 (2.6.0)
  • ruby 进度条 (0.0.10)
  • rubygems-更新 (1.8.5)
  • rubyzip (0.9.4)
  • s4t-utils (1.0.4)
  • selenium-webdriver (0.2.2)
  • 语法 (1.0.0)
  • term-ansicolor (1.0.5)
  • ttfunk (1.0.1)
  • 用户选择 (1.1.6.1)
  • viewcumber (0.1.2)
  • watir (1.9.2)
  • win32-api (1.4.8 x86-mingw32)
  • win32 进程 (0.6.5)
  • win32 控制台 (1.3.0 x86-mingw32) -windows-api (0.4.0)
  • windows-pr (1​​.2.0)
  • xml-简单 (1.1.0)
  • xpath (0.1.4)

最佳答案

我找到了解决方法:

def execute_js(js_code)
  begin
    Timeout::timeout(2) do
      @browser.goto("javascript:#{js_code};void(0)")
    end
  rescue Exception => e
    goto "#{@browser.url}#"  # <<< workaround is here
    return
  end
end

execute_js("doNavigate()")

这并不理想,但它会启用 javascript 执行,然后更新 URL 哈希,以便 Watir 知道实际操作已完成,以便 Watir 可以走得更远。

关于javascript - 强制浏览器结束当前步骤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6736624/

相关文章:

javascript - Watir - 如何访问通过 Javascript 生成的输入类型 = 文本元素?

javascript - DOM 解析器 Chrome 扩展内存泄漏

selenium - 功能文件指向不存在的项目

java - 为什么我的 ExpectedConditions 命令被忽略? Java 中的 Selenium WebDriver

java - Cucumber 特征文件未绑定(bind)到粘合路径

带有 watir webdriver : Need help using helperApps. 的 Firefox 4 neverAsk 不提示保存 CSV

javascript - 所见即所得预览?

javascript - 如何使用replace()从HTML中删除竖线 "|"

javascript - 单击按钮后如何将数据从数组插入到数组

watir - 在 Watir 中处理对话框