2

我正在尝试使用 c# 在带有 selenium 的 IE 上运行不同的浏览器模式。这是一些代码:

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 版本呈现内容吗?

谢谢

4

2 回答 2

3

不,IEDriver 将启动机器上安装的任何 IE。

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

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

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

您将必须拥有单独的 Windows 机器。

一种解决方法(又是一种 hack)是在注册表中设置浏览器仿真模式,如SO question中所述。

请注意,在上述问题中,接受的答案不起作用,但其他答案可能起作用。请注意,对该答案的评论是由 IEDriver 本身的维护者提出的,强烈建议不要这样做。

我尚未测试的另一种解决方法可能是使用本机 C# Keyboard.SendKeys如MSDN 中所述。我不确定它是否会起作用(不要认为有人曾经尝试过它),但这是另一种选择。

于 2013-06-01T09:55:54.717 回答
0

Selenium 支持跨浏览器测试同一浏览器的不同版本,但不是通过在 F12 Tools 的 Browser Mode 中切换版本来实现的。

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 实例进行额外管理。

于 2014-02-07T11:08:01.400 回答