ruby-on-rails - 在生产环境中运行 Watir 等慢速网络驱动程序

标签 ruby-on-rails ruby watir watir-webdriver

我创建了一个应用程序,它使用 Watir 自动登录并在站点内执行一些功能。

现在它是 100% 纯粹用 ruby​​ 类编写的,我只是在 irb 中执行,但我想将它放入 Rails 应用程序中并将其放在网上。除了测试之外,我找不到太多关于使用 Capybara 或 Watir 之类的东西进行任何其他操作的信息。这是因为它们速度太慢还是能力问题?

我是否能够运行一个后台进程,使用 Watir 打开浏览器并为生产中的每个用户执行一些功能?

我的另一个问题是如何保持 session 更长时间。我的应用程序登录有两个需要 2FA 的网站。如果我想使用 Watir 浏览器每小时登录并执行一次功能,我可以将其创建为后台进程(如果可行的话)。但是,当该过程完成后,浏览器将关闭,当后台进程在一小时内再次运行时,它再次需要 2FA。

我的另一个担心是速度。如果我有 50 个用户都需要同时运行 Watir 浏览器,我想这会很慢。我不太担心速度,只要它们运行并收集数据并执行我们需要的少数操作,但它会如何影响应用程序的完整性。

最佳答案

WATIR 是专门为测试工具而设计的。WATIR 代表 Ruby 中的 Web 应用程序测试。它的设计以用户的方式与浏览器交互为中心,有效地模拟用户在使用网站时所采取的相同操作。对于其他任务来说,这将是次优的,这是可以预料的。由于抓取和测试具有非常相似的事件,因此有很多人使用 watir 来完成该任务,但它不是为此目的而设计的,并且 WATIR 开发人员不太可能添加特定于数据抓取和测试的功能。

对于您正在考虑的事情,您应该问自己是否正在做相当于使用 socket Spanner 作为锤子的操作,以及是否有更好的工具可以使用。

如果您与之交互的网站支持 API,那么这将是与它们交互以从网站获取信息的首选方式。如果不支持,您可能需要考虑查看其他可以让您请求站点 HTML 或直接解析 HTML 的 gem(例如 Nokogiri)

您还应该检查您正在交互的网站(如果您不拥有这些网站)的服务条款,以确保不禁止使用“机器人”或其他自动方式访问该网站。如果是这样,那么按照您建议的方式使用 Watir 可能最终会导致您被禁止访问该网站(如果您的访问模式显然是自动化过程的结果)。

关于ruby-on-rails - 在生产环境中运行 Watir 等慢速网络驱动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46212565/

相关文章:

ruby - DataMapper 关联中的外键名称

ruby - 如何使用 Ruby 在 GUI 中封装 Watir 浏览器实例?

ruby-on-rails - Rails 可操作别名请求来源

ruby-on-rails - postgresql 和 rails 4 的二进制文件附件 "unrecognizable format"

ruby-on-rails - 从 Rails 文本中删除 <div> 标签

ruby-on-rails - 编码或序列化 ActiveRecord 对象

ruby-on-rails - 如何为开发和登台环境正确配置 mongoid?

ruby-on-rails - 数据库中非唯一索引的目的是什么?

watir - 如何让标签消费?

testing - 单击 Watir 中嵌套元素的复选框