2016-02-26 32 views
0

由于Selenium可以遍历JavaScript网站(Mechanize不能),并且Mechanize可以发出Post请求(Selenium不能),在某些情况下,使用这两种方法会很有用。代表Selenium/WebDriver机械化发布请求?

+ Zarkonnen对this question的回答表明,最初会使用Selenium,然后Mechanize会介入发出请求并将其传递给Selenium。

如何将Mechanize post方法整合到Selenium中?

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

enter image description here

编辑这里的维恩图,希望能够澄清我要求的功能。

在这种情况下,“Javascript网站”仅仅意味着一个网站,如果没有启用javascript,其功能将无法正常工作。意思是说,我需要遍历一个网站才能在该网站上找到一个表单。一路上,我遇到了没有启用javascript的按钮。然后,为了让表单按我想要的方式工作,我必须自定义帖子。在这种情况下,Selenium WebDriver和Mechanize都不能自己处理它们 - 它们需要彼此的帮助。

你会怎么做到这一点?你会使用Selenium,然后让机械化步入帮助,当你不得不做这个职位?你会使用其他方法在Selenium中发布帖子吗?你会使用水豚宝石?我在WebDrivers制作文章时遇到了限制,但我知道必须有一个解决方法。

+0

一般来说,人们使用水豚而不是机械做这种东西。您可以将Capybara配置为使用硒驱动程序(或webkit或poltergeist/phantomjs)并获得相同的结果。它比用相当简单的DSL语法机械化更强大。也许尝试一下。 –

+0

@Josh - 没有人通常不使用水豚,硒(watir)实际上是一个更受欢迎的红宝石库。 – pguardiario

+0

很难说出你在问什么,你想知道如何来回传递cookie,或者如何将一个Mechanize :: Page body变成Selenium浏览器html? – pguardiario

回答

1

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

一般来说,如果您需要在交互式场景中模拟人类,那么您无法击败WebDriver。然而,网络是建立在HTTP之上的,Selenium所做的一切都是HTTP,所以你的场景交互性越低,模拟真实用户所需的就越少,性能越重要,机械化越需要,甚至可能更多低级别的HTTP库。

正因为如此,尽管这两种技术是互补从某种意义上说,我想不出所有许多很好的理由在一起使用它们。但也许以下几点:

  • 管理的webdriver在网站上用户,机械化用于查询REST端点倾倒指标,清除缓存,运行使用报告,揭开序幕的同时请求来模拟并发。
  • 机械化用于在WebDriver运行之前播种/准备测试数据。

这些都是例子,其中的webdriver 可以用于一切,但它会极大地更容易,更有效地使用非交互式工具。