2013-05-31 55 views
2

我试图在IE上运行不同的浏览器模式,使用c#的硒。这里有一些代码:如何在IE上用selenium更改浏览器模式?

var ieWebDriver = new InternetExplorerDriver(@"PATHTOWEBDRIVER"); 
ieWebDriver.Keyboard.SendKeys(Keys.F12); 

ieWebDriver.Keyboard.SendKeys(Keys.LeftAlt); 
ieWebDriver.Keyboard.SendKeys("b"); 
ieWebDriver.Keyboard.SendKeys(Keys.NumberPad7); 

我可以打开开发人员工具(f12),但我无法更改浏览器模式。 IE是否阻止了这种安全性?如果是这样,有没有其他的方式来使用较低的IE版本来呈现内容?

感谢

回答

3

号的IEDriver将推出无论是在机器上安装IE。

更改“浏览器模式”并不是您要更改的版本的真实表示。 IE7标准模式下的IE9不是IE7的真正版本。

因此,你陷入了一个问题。你想测试不同版本的IE,你是怎么做到的?

问题是,Windows让我们在任何时候都只能在Windows PC上安装一个IE版本。是的,有一些黑客和程序可以获得多个版本(IE5及以上版本)在单台机器上运行,但它们都是黑客。那些不能很好地工作的黑客,即使这样,你甚至不能给IEDriverServer灵活性来做到这一点。

你将不得不有独立的Windows机器。

解决方法再次成为黑客,它将在注册表中设置浏览器仿真模式,如SO question中所述。

请注意,在上述问题中,接受的答案是而不是去工作,但其他答案可能会做。请注意对该答案的评论,由IEDriver本身的维护人员提供,建议强烈反对

另一个解决方法,我没有测试过,也许使用原生C#Keyboard.SendKeys,如MSDN中记录的here。我不确定它是否会起作用(不要认为有人曾经说过),但这是另一种选择。

+0

我认为设置“browserMode”是否有所作为。我从手动测试网站知道,调整浏览器模式实际上给我的结果,我期望从浏览器,当我把它设置为该模式。也许在某些情况下,它不是一个真实的表示,但没有一个具体的例子,这只是一个全面的陈述,我不认为它是事实。 – djangofan

+1

@djangofan,我不同意,恭敬地说,这篇文章解释了它比我所能做到的要好得多:http://stackoverflow.com/questions/10249454/how-well-does-ie7-8-mode-in-ie9-compare -to-actually-running-ie7-8/11418046#11418046 – Arran

+0

伟大的事实链接。感谢您提供它。除非有事实依据,否则我不会相信这一主张。 – djangofan

0

Selenium支持同一浏览器的不同版本的跨浏览器测试,但不能通过在F12工具中以浏览器模式切换版本来实现。

https://code.google.com/p/selenium/wiki/Grid2

您可以设置虚拟机与不同版本的IE浏览器的工作如硒节点和用Selenium集线器来连接它们。假设您有一台安装了IE9的Windows 7虚拟机。您将在那里启动一个Selenium节点,并指定它接受IE9测试的请求。然后,您将为版本9创建InternetExplorerDriver,连接到集线器并运行测试。集线器使用IE9找到节点并在那里运行测试。

相关的帖子在这里: https://stackoverflow.com/a/8524216/1080590

这是你想要一台机器上做什么当然是不同的,但它更可靠,并防止您从本地的IE实例的额外的管理。

相关问题