如何使用selenium在IE上更改浏览器模式?

时间:2013-05-31 23:01:37

标签: selenium selenium-webdriver

我正在尝试使用c#在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版本较低的内容?

感谢

2 个答案:

答案 0 :(得分:3)

没有。 IEDriver将启动计算机上安装的任何IE。

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

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

问题在于Windows让你在任何时候都只在Windows PC上拥有一个IE版本。是的,有一些黑客和程序可以在一台机器上运行多个版本(IE5及更高版本),但它们都是黑客攻击。那些不能很好地工作的黑客,即便如此,你甚至无法为IEDriverServer提供灵活性。

您必须拥有单独的Windows计算机。

一种解决方法,也就是黑客攻击,就是在注册表中设置浏览器仿真模式,如SO question中所述。

请注意,在上面的问题中,接受的答案是开始工作,但另一个答案可能会起作用。请注意,对该答案的评论是由IEDriver本身的维护者提出的,建议强烈反对此。

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

答案 1 :(得分:0)

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

请参阅https://code.google.com/p/selenium/wiki/Grid2

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

相关文章: https://stackoverflow.com/a/8524216/1080590

这当然与您在单台计算机上尝试的操作不同,但它更可靠,并且阻止您对本地IE实例进行额外管理。