问题标签 [ruby-watir]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
selenium - 作为单个操作的结果链接页面对象或多个可能的页面对象
在 Web 集成测试中,页面对象预期会作为某些操作的结果返回其他页面对象。例如,aLoginForm.submit()
可能在成功时返回CustomerDashboard
页面对象或LoginFailed
在失败时返回对象。
我难以理解的是当系统不是那么确定时会发生什么。例如Order.submit()
可能会导致一个OrderProcessing
页面,或者一个OrderProcessed
页面。处理这种情况的最佳方法是什么?是否应该Order.submit()
返回一个可能的 PageObjects 元组,然后在单个测试中处理?这里推荐的方法是什么?
使用扩展的问题陈述进行更新
想象一下,您有一个接受订单的购物系统。提交订单时,系统可能会立即处理订单,也可能会将订单放入队列中。最终,排队的订单得到处理。在 Rubyish 伪代码中,负责测试的页面对象对象是:
因此,在我们的测试中,我们可以执行以下操作:
或者我们可以测试其他场景:
这里的想法是我们确切地知道预期的行为,因此我们可以调用返回预期页面对象的帮助程序。事实上,这在这个关于 SO的问题中得到了很好的描述。
我正在尝试处理行为不是那么确定的情况。想象一下,上面submit_for_immediate_processing
和 submit_for_queued_processing
上面被折叠成一个方法,submit_for_processing
并且行为是由系统的运行时属性决定的。也就是说,订单要么立即处理,要么放入队列中。从测试的角度来看,这种行为并不理想,但它就是这样。我想了解谁负责确定此submit_for_processing
方法的结果。在这种特殊情况下,无论如何我对“排队”状态并不感兴趣。我想到达处理订单的地方,所以我可以验证各种订单属性。
ruby - 如何使用 Watir 6.0 下载文件
我正在尝试使用新的 Watir 6.0 下载 CSV 文件。我找到了 Firefox 的配置文件设置:
但 Firefox 50.0 不支持加载配置文件设置。我收到此错误消息:
我还尝试了 Chrome 的配置文件设置:
但文件不会被保存,文件保存对话框也不会关闭。
所以两者都不适用于新的 Watir。有谁知道用 Watir 下载文件的方法?
ruby - Watir 通过 xpath 查找元素,但不是通过 id 或 class
我可以使用它的 XPath 找到一个元素,但不能使用它的 ID、类或文本。我不想使用 XPath,因为我知道它很容易损坏。
这是它的样子:
它返回 true 并单击元素。
按照路径,我找到了元素,然后尝试使用它的 ID,例如:
它返回 false 并尝试单击超时。文本或类也是如此。
该元素不在框架或 iframe 内。
为什么会发生这种情况,我该如何解决?
ruby - 显示表格元素详细信息的 Ruby 代码
我有一个 HTML,它以下列方式显示产品详细信息:
Ruby代码如下:
我以这种方式获得输出:
但我希望详细信息显示如下:
有人可以帮忙吗?
watir - 如何获取(打印)watir gem 文件中的当前时间?
我想打印在 watir gem 文件中调用该函数的当前时间。
例如:在 /watir/element/select.rb 里面
我需要打印当前时间,考虑何时调用 select_by。我尝试添加
但是,它显示错误为
ruby - 单击所有不同的下一页进入循环,直到带有 Watir gem 的最后一页
我的 ruby watir 脚本有问题。
我想点击所有下一页直到最后一页,然后输入一些名字和姓氏。我知道最后一个“下一个”链接是用另一个类“禁用”调用的stop = b.link(class: 'next-pagination page-link disabled')
。我尝试循环直到达到这个类break if stop.exists?
我有这个错误:
此代码在等待元素存在的默认超时期间一直处于休眠状态。如果测试仍然通过,请考虑使用 Element#exists? 而不是拯救 UnknownObjectException /Users/vincentcheloudiakoff/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/watir-6.2.1/lib/watir/elements/element.rb:496:in
rescue in wait_for_exists': timed out after 30 seconds, waiting for #<Watir::Div: located: false; {:class=>"name-and-badge-container", :tag_name=>"div", :index=>13}> to be located (Watir::Exception::UnknownObjectException) from /Users/vincentcheloudiakoff/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/watir-6.2.1/lib/watir/elements/element.rb:486:in
wait_for_exists '来自 /Users/vincentcheloudiakoff/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/watir-6.2.1/lib/watir/elements/element.rb:487:inwait_for_exists' from /Users/vincentcheloudiakoff/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/watir-6.2.1/lib/watir/elements/element.rb:487:in
wait_for_exists' 来自/Users/vincentcheloudiakoff/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/watir-6.2.1/lib/watir/elements/element.rb:639:inelement_call' from /Users/vincentcheloudiakoff/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/watir-6.2.1/lib/watir/elements/element.rb:91:in
text' 来自 /Users /vincentcheloudiakoff/Travail/Automation/lib/linkedin.rb:24:inblock (2 levels) in start' from /Users/vincentcheloudiakoff/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/watir-6.2.1/lib/watir/element_collection.rb:28:in
每个'来自 /Users/vincentcheloudiakoff/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/watir-6.2.1/lib/watir/element_collection.rb:28:ineach' from /Users/vincentcheloudiakoff/Travail/Automation/lib/linkedin.rb:24:in
map' 来自 /用户/vincentcheloudiakoff/Travail/Automation/lib/linkedin.rb:24:inblock in start' from /Users/vincentcheloudiakoff/Travail/Automation/lib/linkedin.rb:22:in
loop' 来自 /Users/vincentcheloudiakoff/Travail/Automation/lib/linkedin.rb:22:instart' from start.rb:3:in
'
它点击下一页,但没有找到下一个禁用的按钮。
ruby - 如何使用 Sinatra 和 Watir gem 在 Heroku 上部署 Ruby 应用程序
嗨,我在使用 Sinatra 和 Watir gem 在 Heroku 上部署我的 Ruby 应用程序时遇到了一些麻烦。我必须加载一个 chrome 窗口,这就是我阅读消息的原因:
"Application error
An error occurred in the application and your page could not be served."
我试图在 localhost 上启动我的应用程序,它运行良好,但在 Heroku 上却不行。
我安装了这个 chrome 驱动程序 buildpack https://github.com/heroku/heroku-buildpack-chromedriver 和这个https://github.com/heroku/heroku-buildpack-xvfb-google-chrome。
我也做了以下步骤"Only supported on Cedar-14
Note that this buildpack only works on Cedar-14 stack."
我的构建日志告诉我我的应用程序部署在 Heroku 上没有问题。这是我第一次在 Web 上部署应用程序,如果可能的话,我真的需要使用 Heroku。
我尝试了另一种方式来部署我的应用程序,没有 chrome 驱动程序构建包,它运行良好。显然,在我的程序中使用 Watir gem 的部分无论如何都不起作用。
watir - 无法选择选择选项
我正在尝试从我的选择字段中选择一个值:
在我的代码中,我试图设置第二个选项:
我收到了这个错误:
我尝试了以下替代方法,但它们不起作用:
通过javascript单击元素:
@browser.execute_script("返回参数[0].click();", browser.link(:id => 'shopping_cart_kind')
按索引选择:
@browser.select_list(id: "shopping_cart_kind", index: 1).select ("PDC") @browser.select_list(id: "shopping_cart_kind").option[1].select
没有任何效果!
ruby-on-rails - Ruby on Rails 如何获取表格特定列的每一行?循环遍历行?
我有如下图所示的这张表:我正在使用 Ruby Watir 获取第一列的每一行。
https://dominiumestate.com/wp-content/uploads/2019/08/Capture.jpg
我已经尝试过了,但我不能只得到表的每一行
t = browser.table(:index => 1).tbody()
reactjs - 如何使用 Watir 自动化 Reactjs 下拉自定义元素
我如何选择一个选项?我确实尝试过
他们都没有工作