Capybara使用Internet Explorer作为浏览器而不是Firefox。

6

你好,有没有可能让Capybara使用IE浏览器而不是默认使用Firefox浏览器?

我需要编写一些自动化测试,但业务只支持Internet Explorer浏览器,因此我需要在该浏览器上运行测试。

谢谢。


1
如果您将IE设置为该计算机上的默认浏览器会怎样呢? - marc_s
尝试过了,但是当我运行capybara测试时,Firefox会弹出来,就像Capybara框架中有浏览器的覆盖设置一样。它必须是可配置的,但是如何配置呢? - logi
2个回答

4
如评论中marc_s所建议的,您可以尝试在测试机上将IE设置为默认浏览器。
我还发现一些关于使用Capybara和Selenium(远程控制)的谷歌搜索结果。
如果您有兴趣,请查看Selenium文档以了解如何指定浏览器。 编辑 看起来我之前发布的教程只适用于Rack。不确定,但也许这个可以代替:

http://www.johng.co.uk/2010/10/13/run_capybara_and_cucumber_features_in_internet_explorer_on_remote_windows/

Capybara.app_host = "http://192.168.1.37:3000"
Capybara.default_driver = :selenium
Capybara.register_driver :selenium do |app|
  Capybara::Driver::Selenium.new(app,
    :browser => :remote,
    :url => "http://192.168.1.127:4444/wd/hub",
    :desired_capabilities => :internet_explorer)
end

仍需要使用Selenium。

编辑2:

如果您遇到此错误:

Capybara::TimeoutError:同步失败,ajax请求超时

然后尝试将此代码添加到features/step_definitions/mydefiniation.rb中:

Before do
  page.driver.options[:resynchronize] = false
end

请参考这个关于特定问题的问题:使用Capybara进行AJAX集成测试


感谢您的建议,但这些示例是针对基于Rack的应用程序的。被测试的应用程序不会是一个Rack应用程序。 - logi
@logi:发现另一个例子。博客文章下面的评论提到“如果你正在使用Rack,请改用这种方法”,所以也许不需要Rack就可以实现 :) - Merlyn Morgan-Graham
我自己尝试过,它可以打开IE8窗口并运行自动化测试,但是我收到了一个错误消息,显示“无法重新同步,ajax请求超时(Capybara :: TimeoutError)”。 - Roderick
1
@VGambit:也许这个链接可以帮到你 - https://dev59.com/CVnUa4cB1Zd3GeqPYTrG - Merlyn Morgan-Graham
@VGambit:编辑了答案以涵盖此内容。感谢您的反馈!记得给那个问题和/或答案点赞 :) - Merlyn Morgan-Graham

0

使用 ->

ignore_mode = opts.delete(:introduce_flakiness_by_ignoring_security_domains) != false

前往 -> 外部库 - selenium-webdriver - lib - selenium - webdriver - ie - bridge.rb

更新 IE 模块 -> def initialize

它包含 -

ignore_mode = opts.delete(:introduce_flakiness_by_ignoring_security_domains)

只需添加 != false,使其变为 ->

ignore_mode = opts.delete(:introduce_flakiness_by_ignoring_security_domains) != false


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接