因为 Selenium 可以遍历 javascript 网站(Mechanize 不能),并且 Mechanize 可以发出 post 请求(Selenium 不能),所以在某些情况下,将两者结合使用会非常强大。
+Zarkonnen 对 this question 的回答建议一开始使用 Selenium,然后 Mechanize 会介入发出 post 请求,然后将其传递回 Selenium。
如何将 Mechanize post 方法集成到 Selenium 中?
我正在使用这些库的 Ruby 版本,但任何信息都会有用。
编辑这是一个维恩图,希望能够阐明我正在寻求的功能。
在这种情况下,“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/