javascript - Mechanize 代表 Selenium/WebDriver 发出发布请求?

标签 javascript ruby selenium-webdriver capybara mechanize

因为 Selenium 可以遍历 javascript 网站(Mechanize 不能),并且 Mechanize 可以发出 post 请求(Selenium 不能),所以在某些情况下,将两者结合使用会非常强大。

+Zarkonnen 对 this question 的回答建议一开始使用 Selenium,然后 Mechanize 会介入发出 post 请求,然后将其传递回 Selenium。

如何将 Mechanize post 方法集成到 Selenium 中?

我正在使用这些库的 Ruby 版本,但任何信息都会有用。

enter image description here

编辑这是一个维恩图,希望能够阐明我正在寻求的功能。

在这种情况下,“Javascript 网站”只是指如果不启用 JavaScript,其相关功能将无法运行的网站。意思是,假设我需要遍历一个网站才能访问该网站上的表格。一路上我遇到了一些按钮,如果没有启用 JavaScript,这些按钮就无法工作。然后,为了使表单按照我想要的方式工作,我必须进行自定义发布。在这种情况下,Selenium WebDriver 和 Mechanize 都无法自行处理 - 它们需要彼此的帮助。

您将如何实现这一目标?您会使用 Selenium,然后在您必须完成帖子时让 Mechanize 介入来提供帮助吗?您会使用其他方法在 Selenium 中发帖吗?您会使用 capybara gem 吗?我知道 WebDrivers 发帖有限制,但我知道必须有一个解决方法。

最佳答案

这个问题有点模糊,但是 Selenium (WebDriver) 和一个好的非交互式 HTTP 库(如 Mechanize)都是测试人员武器库中的关键元素。

总的来说,如果您需要在交互式场景中模拟人类,那么您无法击败 WebDriver。然而,Web 是建立在 HTTP 之上的,Selenium 所做的一切都是 HTTP,因此您的场景交互性越少,您需要模拟真实用户的次数就越少,并且性能越重要,您就越应该关注 Mechanize,甚至可能较低级别的 HTTP 库。

因此,尽管这两种技术在某种意义上是互补的,但我想不出有那么多充分的理由结合使用它们。但也许是以下几点:

  • WebDriver 管理网站上的用户,Mechanize 用于查询 REST 端点以转储指标、清除缓存、运行使用情况报告、启动同时请求以模拟并发。
  • Mechanize 用于在 WebDriver 运行之前播种/准备测试数据。

在这两个示例中,WebDriver 可以用于一切,但使用非交互式工具会更加容易且更加高效。

关于javascript - Mechanize 代表 Selenium/WebDriver 发出发布请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35649047/

相关文章:

ASP.NET GridView : How can we find which column was selected in gridview

javascript - 如何使 Chrome 输入不可选择(但允许编辑)?

mysql - 无法将值插入 Ruby Mysql 中的表

c# - C# Selenium 中的警报/确认/弹出处理

javascript - 在 jQuery 中切换图像和改变 div 大小

javascript - 使用闭包创建的私有(private)函数如何访问构造函数中定义的变量?

ruby-on-rails - 使用 Wicked PDF 将 PDF 附加到电子邮件时如何指定布局

ruby-on-rails - 有没有更好的方法在 ruby 中做到这一点

java - 执行 Selenium WebDriver 测试期间,Firefox 已打开,但地址栏上未输入 URL

google-chrome - WebDriverException : unknown error: DevToolsActivePort file doesn't exist while trying to initiate Chrome Browser