Watir 帮助:click-no-wait 和execute_script 未按预期工作

2023-12-20

使用 ruby​​ 的 Watir gem,我尝试单击一个打开 javascript 弹出窗口的按钮,然后单击弹出窗口上的“确定”,但我似乎无法做到这一点。该按钮位于框架中的框架中。我进行了广泛的搜索并阅读了 Watir维基条目 http://wiki.openqa.org/display/WTR/JavaScript+Pop+Ups关于 javascript 弹出窗口,但没有任何效果。
我认为这是因为execute_script 和click_no_wait 没有按预期工作。
例如,以下命令:

    @browser.execute_script('window.alert = function() {}')
    @browser.execute_script('alert("hello")')

创建一个 javascript 弹出窗口,显示“hello”,而不是不执行任何操作的预期行为。
命令:

    @browser.button(:value, 'Submit').click

单击创建 JavaScript 弹出窗口的按钮。然后,脚本将挂起,直到我手动单击弹出窗口上的“确定”。
命令:

    @browser.button(:value, 'Submit').click_no_wait

不单击按钮(或者单击按钮但不触发 onclick 事件)。
我也尝试过:

    Timeout::timeout(1) { @browser.button(:value, 'Submit').click }

and

    Thread.new { @browser.button(:value, 'Submit').click }

但超时永远不会抛出异常,导致 ruby​​ 挂起,直到我手动单击弹出窗口上的“确定”,而当我在新线程中运行它时,Watir 不会单击。

有人可以提供帮助或提供解决方案吗?

编辑:问题是在 @browser.button.click 之后,脚本会挂起,直到弹出窗口关闭。 @browser.alert.ok 成功关闭弹出窗口,但单击按钮后脚本无法执行 @browser.alert.ok,因为它会挂起直到弹出窗口关闭。这个catch-22应该通过click_no_wait来解决,但是click_no_wait没有点击。

系统信息:
Windows 7 企业版 64 位
Internet Explorer 版本 9.0.12
watir-4.0.2-x86-mingw32
红宝石 1.9.3p286 (2012-10-12) [i386-mingw32]


有一个警报 api (瓦提尔经典 http://rdoc.info/gems/watir-classic/frames and watir 网络驱动程序 http://rubydoc.info/gems/watir-webdriver/Watir/Alert),您可以使用它与 j​​avascript 弹出窗口进行交互。

尝试使用以下命令关闭弹出窗口:

@browser.alert.ok

更新 - 解决方法:

这似乎是对框架中的元素使用 Element#click_no_wait 的错误。我已经更新了Issue 45 https://github.com/watir/watir-classic/issues/45并将尝试提交补丁。

同时,在脚本开头添加以下猴子补丁应该可以解决问题(即 click_no_wait 不应等待):

require 'watir-classic'

Watir::IE.new(true)
module Watir
    class Frame
        def attach_command
            tag_name = @specifiers[:tag_name].join("' << '")
            @container.page_container.attach_command + ".frame(:tag_name => Array.new << '#{tag_name}', :unique_number => #{unique_number})"
        end
    end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Watir 帮助:click-no-wait 和execute_script 未按预期工作 的相关文章

  • 如何声明依赖于参数化任务的 Rake 任务?

    我见过一些任务具有参数和依赖项任务的示例 例如 task name first name last name gt pre name do t args args with defaults first name gt John last
  • rake db 问题:迁移 -

    我无法为 Ruby on Rails 设置 MySQL 数据库 设置数据库并确保 config database yml 文件匹配后 我遇到了以下错误消息 U Rails alpha gt rake db migrate trace in
  • Ruby:用于检查 nil /false 条件语句的干净代码?

    我总是遇到这个Ruby问题 我想写得更干净 var a can be nil a value can also be nil a value has possible true or false value if not a nil not
  • ruby 中 Array#uniq 方法的时间复杂度是多少?

    谁能告诉我 ruby 内部使用哪种算法来使用 ruby 数组删除重复项Array uniq method 来自docs http www ruby doc org core 1 9 3 Array html static VALUE rb
  • ruby rspec 不能与 simplecov 一起使用

    我安装了 simplecov gem 并添加了 require simplecov SimpleCov start 到spec helper rb文件 现在如果我在some file spec rb文件中包含spec helper rb并尝
  • 使用 HTTPClient 发布嵌套参数(哈希)

    我需要从一个应用程序到另一个应用程序的多部分 http 帖子 其中包括文件附件和嵌套的参数哈希 我尝试使用HTTPClient这适用于文件附件 但是我无法获取以嵌套格式发送的参数 data params Hash new data para
  • 自动将 JSON 对象映射到 Ruby 中的实例变量

    我希望能够自动将 JSON 对象解析为实例变量 例如 使用此 JSON require httparty json HTTParty get http api dribbble com players simplebits gt shots
  • 使用yard创建文档时如何防止[查看源代码]链接?

    我正在使用yard生成项目文档 但我不想在文档中显示 查看源代码 链接 我已深入研究yard官方指南 但仍然没有得到解决方案 有什么想法吗 谢谢 我可能有点晚了 但您可以通过从 method details 部分中删除 源 部分来轻松自定义
  • 使用哈希时 fetch 与 [] ? [复制]

    这个问题在这里已经有答案了 来自鲁比 科恩斯about hashes rb 为什么你可能想使用 fetch代替 当访问哈希键时 默认情况下 使用 如果存在则检索哈希值 如果不存在则返回 nil Using fetch给你一些选择 请参阅文档
  • 用一种方法进行 Ruby 选择和拒绝

    是否有任何内置方法可以结合以下功能Enumerable select 找到该块等于 true 的所有内容 和Enumerable reject 找到该块中所有等于 false 的内容 就像是 good bad list magic meth
  • 为什么递归会出现“堆栈级别太深”?

    我有这个红宝石代码 def get sum n return 0 if n lt 1 n 3 0 n 5 0 n get sum n 1 get sum n 1 continue execution end puts get sum 999
  • rake cucumber 和 rake spec 始终使用“开发”环境

    我运行 Cucumber 和 RSpec 测试的 rake 任务始终使用我的development环境 以下是相关的配置文件 RAILS ROOT config environments cucumber rb Edit at your o
  • 如何将枚举作为字符串存储到rails中的数据库中

    如何在 ruby 中创建迁移 其中默认值是字符串而不是整数 我想将枚举存储到数据库中 但我不想将其存储为整数 因为这样对于另一个应用程序来说没有意义想要使用同一张桌子 我该怎么做default female 代替default 0 clas
  • 以 Rails 形式处理 MongoMapper EmbeddedDocument

    首先 我对一般编程和 Rails 都是新手 我选择 Rails 是因为它看起来是一种很容易上手的语言 对于我的项目 我将 MongoMapper 与 Rails 结合使用 我正在尝试以与文档相同的形式处理嵌入文档 我有以下模型 class
  • Ruby:创建日期范围

    我正在寻找一种优雅的方式来制作一系列日期时间 例如 def DateRange start time end time period end gt gt results DateRange DateTime new 2013 10 10 1
  • 在文档片段中查找注释或文本节点

    我必须清理 Nokogiri HTML DocumentFragment 文档 删除仅包含空格的注释节点和文本节点 这是一个例子 html p paragraph p p paragraph p p paragraph p doc Noko
  • 用于验证网络路径的正则表达式 PHP、jQuery、JavaScript、Ruby

    尝试找出用于验证网络路径的正则表达式 即 comp xyz or comp or comp x y z storage或者所有部分都更长的东西 但希望能够传达其要点 我目前拥有的是一个简单的输入字段 用户可以通过它传递信息 事情是我不希望他
  • 可以通过 url 发送 JSON 吗?

    我有一个 ruby 哈希 其中键是 url 值是整数 我将哈希值转换为 JSON 我想知道是否能够通过 AJAX 请求在 url 内发送 JSON 然后从 params 哈希值中提取该 JSON 另外 我将把 JSON 化的 ruby 哈希
  • factory_girl + rspec 似乎并没有在每个示例后回滚更改

    类似于这里描述的问题 http rpheath com posts 411 how to use factory girl with rspec http rpheath com posts 411 how to use factory g
  • 如何在 Ruby 中转义单引号?

    我通过一个脚本 不是我的 将一些 JSON 传递到服务器 该脚本接受 JSON 作为字符串 JSON 的某些内容包含单引号 因此我想确保在传递给脚本之前对所有单引号进行转义 我已经尝试过以下方法 gt irb gt 1 9 3p194 00

随机推荐