我用的是ruby和rspec2的selenium-webdriver
。
我有很多web测试自动化,我需要使用IE,我需要运行一个干净的会话(特别是清除cookies)每个测试。
在这种情况下,selenium webdriver正在使用InternetExplorerDriver
(IEDriverServer.exe
),其中documentation表示:
有两种解决cookies问题的方法(以及另一个会话
项)在InternetExplorer的多个实例之间共享。
首先是以私有模式启动InternetExplorer之后
InternetExplorer将使用干净的会话数据启动,并将
退出时不保存更改的会话数据所以你必须通过2
驱动程序的特定功能:ie.forcecreateprocessapi和true
值和ie.browsercommandlineswitches具有-private值。注意
它只适用于InternetExplorer8和更新版本,以及Windows
注册表路径应包含值为0的键TabProcGrowth
第二个是在InternetExplorer启动期间清理会话。为了
这需要通过特定的ie.ensureCleanSession能力
对驱动程序的真实值这将清除所有运行实例的缓存
InternetExplorer的,包括手动启动的。
我的问题很简单:
有谁能举例说明在Ruby/Rspec2中如何实现这一点呢。
例如,我目前有:
before(:each) do
@driver = Selenium::WebDriver.for :internet_explorer
@driver.manage.window.maximize
@base_url = "https://www.example.com/"
@accept_next_alert = true
@driver.manage.timeouts.implicit_wait = 30
@verification_errors = []
end
如何使用Ruby/Rspec将这些IE参数传递给IE驱动程序?
非常感谢你的帮助。
最佳答案
我知道这篇文章有一个月了,但只是以防万一还有人需要。
在我做了一些研究之后,我终于可以启动新的IEDriver,每次测试都不需要任何会话或cookies代码如下:
before(:each) do
caps = Selenium::WebDriver::Remote::Capabilities..internet_explorer('ie.ensureCleanSession' => true, 'ie.browserCommandLineSwitches' => 'private')
@driver = Selenium::WebDriver.for(:internet_explorer, :desired_capabilities => caps)
@driver.manage.window.maximize
@base_url = "https://www.example.com/"
@accept_next_alert = true
@driver.manage.timeouts.implicit_wait = 30
end
祝你好运!
关于ruby - selenium-webdriver/ruby/rspec2-以干净的 session 启动IE或清除cookie或进行私有(private)浏览,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23523346/