我正在尝试使用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版本较低的内容?
感谢
答案 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实例进行额外管理。