【发布时间】:2016-06-09 12:15:48
【问题描述】:
因为 Selenium 可以遍历 javascript 网站(Mechanize 不能),而 Mechanize 可以发出 post 请求(Selenium 不能),所以在某些情况下将两者结合使用会很强大。
+Zarkonnen 对this question 的回答表明,最初会使用 Selenium,然后 Mechanize 会介入以发出发布请求,然后将其传回给 Selenium。
如何将 Mechanize post 方法集成到 Selenium 中?
我正在使用这些库的 Ruby 版本,但任何信息都会很有用。
编辑这是一个维恩图,希望能阐明我正在寻找的功能。
在这种情况下,“Javascript 网站”只是指一个网站,其相关功能在没有启用 javascript 的情况下将无法运行。意思是,假设我需要遍历一个网站才能访问该网站上的表单。在此过程中,我遇到了在没有启用 javascript 的情况下无法使用的按钮。然后,为了让表单按照我想要的方式工作,我必须做一个自定义帖子。在这种情况下,Selenium WebDriver 和 Mechanize 都无法自己处理 - 他们需要彼此的帮助。
您将如何实现这一目标?你会使用 Selenium,然后让 Mechanize 在你不得不发帖时介入吗?您会使用其他方法在 Selenium 中发帖吗?你会使用水豚宝石吗?我知道 WebDrivers 发布帖子有一些限制,但我知道必须有一种解决方法。
【问题讨论】:
-
一般来说,人们使用Capybara而不是Mechanize来做这种事情。您可以将 Capybara 配置为使用 selenium 驱动程序(或 webkit 或 poltergeist/phantomjs)并获得相同的结果。它比使用相当简单的 DSL 语法的 mechanize 强大得多。也许试试看。
-
@Josh - 没有人通常不使用 capybara,selenium (watir) 实际上是一个更受欢迎的 ruby 库。
-
很难说出您在问什么,您是否想知道如何来回传递 cookie,或者如何将 Mechanize::Page 正文转换为 Selenium 浏览器 html?
-
@pguardiario 实际上,你错了.. 在发表此评论时,水豚在 Github 上有 6,815 颗星,而 watir 有 377 颗星。在ruby-toolbox.com/categories/browser_testing 上,Capybara 排名第一,watir 是几乎没有进入前 10 名。你的陈述可能就像 10 年前一样真实。
-
结合交互式和非i显然非常棘手,因为必须传递所有相同的cookie才能在非i模式下重新创建用户状态。除非我绝望,否则我不会那样做。我可能更喜欢非交互地做所有事情。绝对在这里提出另一个问题来处理您遇到的任何浏览器发布问题,而不是沿着这条路线走 IMO。
标签: javascript ruby selenium-webdriver capybara mechanize