问题标签 [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.

0 投票
1 回答
991 浏览

selenium - 作为单个操作的结果链接页面对象或多个可能的页面对象

在 Web 集成测试中,页面对象预期会作为某些操作的结果返回其他页面对象。例如,aLoginForm.submit()可能在成功时返回CustomerDashboard页面对象或LoginFailed在失败时返回对象。

我难以理解的是当系统不是那么确定时会发生什么。例如Order.submit()可能会导致一个OrderProcessing页面,或者一个OrderProcessed页面。处理这种情况的最佳方法是什么?是否应该Order.submit()返回一个可能的 PageObjects 元组,然后在单个测试中处理?这里推荐的方法是什么?

使用扩展的问题陈述进行更新

想象一下,您有一个接受订单的购物系统。提交订单时,系统可能会立即处理订单,也可能会将订单放入队列中。最终,排队的订单得到处理。在 Rubyish 伪代码中,负责测试的页面对象对象是:

因此,在我们的测试中,我们可以执行以下操作:

或者我们可以测试其他场景:

这里的想法是我们确切地知道预期的行为,因此我们可以调用返回预期页面对象的帮助程序。事实上,这在这个关于 SO的问题中得到了很好的描述。

我正在尝试处理行为不是那么确定的情况。想象一下,上面submit_for_immediate_processingsubmit_for_queued_processing上面被折叠成一个方法,submit_for_processing并且行为是由系统的运行时属性决定的。也就是说,订单要么立即处理,要么放入队列中。从测试的角度来看,这种行为并不理想,但它就是这样。我想了解谁负责确定此submit_for_processing方法的结果。在这种特殊情况下,无论如何我对“排队”状态并不感兴趣。我想到达处理订单的地方,所以我可以验证各种订单属性。

0 投票
1 回答
1011 浏览

ruby - 如何使用 Watir 6.0 下载文件

我正在尝试使用新的 Watir 6.0 下载 CSV 文件。我找到了 Firefox 的配置文件设置:

但 Firefox 50.0 不支持加载配置文件设置。我收到此错误消息:

我还尝试了 Chrome 的配置文件设置:

但文件不会被保存,文件保存对话框也不会关闭。

所以两者都不适用于新的 Watir。有谁知道用 Watir 下载文件的方法?

0 投票
1 回答
1018 浏览

ruby - Watir 通过 xpath 查找元素,但不是通过 id 或 class

我可以使用它的 XPath 找到一个元素,但不能使用它的 ID、类或文本。我不想使用 XPath,因为我知道它很容易损坏。

这是它的样子:

它返回 true 并单击元素。

按照路径,我找到了元素,然后尝试使用它的 ID,例如:

它返回 false 并尝试单击超时。文本或类也是如此。

该元素不在框架或 iframe 内。

为什么会发生这种情况,我该如何解决?

0 投票
2 回答
1817 浏览

ruby - 显示表格元素详细信息的 Ruby 代码

我有一个 HTML,它以下列方式显示产品详细信息:

Ruby代码如下:

我以这种方式获得输出:

但我希望详细信息显示如下:

有人可以帮忙吗?

0 投票
0 回答
132 浏览

watir - 如何获取(打印)watir gem 文件中的当前时间?

我想打印在 watir gem 文件中调用该函数的当前时间。

例如:在 /watir/element/select.rb 里面

我需要打印当前时间,考虑何时调用 select_by。我尝试添加

但是,它显示错误为

0 投票
1 回答
296 浏览

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:inwait_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:in wait_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:inwait_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:in element_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:intext' 来自 /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:in each' from /Users/vincentcheloudiakoff/Travail/Automation/lib/linkedin.rb:24:inmap' 来自 /用户/vincentcheloudiakoff/Travail/Automation/lib/linkedin.rb:24:in block in start' from /Users/vincentcheloudiakoff/Travail/Automation/lib/linkedin.rb:22:inloop' 来自 /Users/vincentcheloudiakoff/Travail/Automation/lib/linkedin.rb:22:in start' from start.rb:3:in'

它点击下一页,但没有找到下一个禁用的按钮。

0 投票
1 回答
149 浏览

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 的部分无论如何都不起作用。

0 投票
1 回答
130 浏览

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

没有任何效果!

0 投票
1 回答
531 浏览

ruby-on-rails - Ruby on Rails 如何获取表格特定列的每一行?循环遍历行?

我有如下图所示的这张表:我正在使用 Ruby Watir 获取第一列的每一行。

https://dominiumestate.com/wp-content/uploads/2019/08/Capture.jpg

我已经尝试过了,但我不能只得到表的每一行

t = browser.table(:index => 1).tbody()

0 投票
0 回答
20 浏览

reactjs - 如何使用 Watir 自动化 Reactjs 下拉自定义元素

我如何选择一个选项?我确实尝试过

他们都没有工作