Javascript Mechanize代表Selenium/WebDriver发出post请求?

Javascript Mechanize代表Selenium/WebDriver发出post请求?,javascript,ruby,selenium-webdriver,capybara,mechanize,Javascript,Ruby,Selenium Webdriver,Capybara,Mechanize,因为Selenium可以遍历javascript网站(Mechanize不能),Mechanize可以发出post请求(Selenium不能),所以在某些情况下,将两者结合使用会非常强大 +Zarkonnen to的回答表明,一开始会使用Selenium,然后Mechanize会介入发出post请求,然后将其传递回Selenium 如何将机械化后处理方法集成到硒中? 我正在使用这些库的Ruby版本,但是任何信息都会有用 编辑这里有一个维恩图,希望能澄清我正在寻找的功能 在这种情况下,“Java

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

+Zarkonnen to的回答表明,一开始会使用Selenium,然后Mechanize会介入发出post请求,然后将其传递回Selenium

如何将机械化后处理方法集成到硒中?

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

编辑这里有一个维恩图,希望能澄清我正在寻找的功能

在这种情况下,“Javascript网站”只是指一个网站,如果没有启用Javascript,其相关功能将无法工作。意思是说,我需要遍历一个网站才能得到该网站上的表单。在这个过程中,我遇到了一些按钮,这些按钮在没有启用javascript的情况下无法工作。然后,为了让表单按照我想要的方式工作,我必须做一个自定义帖子。在这种情况下,SeleniumWebDriver和Mechanize都不能自己处理—它们需要彼此的帮助


你将如何做到这一点?当你不得不写这篇文章时,你会使用Selenium,然后让Mechanize帮助你吗?您是否会使用其他方法在Selenium中发布帖子?你会用水豚宝石吗?我知道WebDriver发帖有局限性,但我知道必须有一个解决办法。

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

总的来说,我认为如果你需要在一个交互式的场景中模拟一个人,那么你不能打败WebDriver。然而,web是建立在HTTP之上的,Selenium所做的一切都是HTTP,因此您的场景交互越少,模拟真实用户的需要就越少,性能越重要,您就越应该寻求机械化,甚至更低级别的HTTP库

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

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

这些都是WebDriver可以用于一切的例子,但使用非交互式工具将更容易、更高效。

一般来说,人们使用水豚而不是机械化来做这类事情。您可以将Capybara配置为使用selenium驱动程序(或webkit或poltergeist/phantomjs)并获得相同的结果。它比使用相当简单的DSL语法的mechanize强大得多。也许可以试试。@Josh-没有人通常不使用水豚,selenium(watir)实际上是一个更流行的ruby库。很难说你在问什么,你是否想知道如何来回传递cookies,或者如何将Mechanize::页面正文转换为selenium浏览器html?@pguardiario事实上,你错了。。在发表此评论时,水豚在Github上拥有6815颗星星,而as watir拥有377颗。就目前而言,水豚鱼排名第1,而瓦蒂尔几乎不在前10名之列。10年前,你的说法可能是正确的。将交互式和非i模式结合起来显然非常棘手,因为必须传递所有相同的cookies才能在非i模式下重新创建用户的状态。除非我绝望,否则我不会那样做。我可能更喜欢以非交互方式做任何事情。当然,在这里提出另一个问题来处理你在浏览器上发布的任何问题,而不是走这条路。