8

我所有的测试都在一个 ubuntu 盒子里运行。测试是用 PHP 编写的。它们可以与 Firefox 驱动程序和 chrome 驱动程序一起正常工作。我正在使用在同一个盒子中运行的独立 selenium 服务器(selenium-server-standalone-2.25.0.jar)。最近我需要针对 IE 平台编写测试。我已经尝试了一些事情,但到目前为止,我仍然不确定为我的特定场景设置 IE 驱动程序的正确方法是什么。

我曾尝试在同一个 ubuntu 框中安装带有 mono 的 IE,但在安装过程中遇到了很多问题,在我解决了这些问题并使其可以从命令行运行 IE 之后,它仍然没有为我的测试工作。

我在这里通读了这个特定的文档:http ://code.google.com/p/selenium/wiki/InternetExplorerDriver并在 Windows 框上继续阅读,直到我看到这个:

由 IEDriverServer.exe 启动的 HTTP 服务器将访问控制列表设置为仅接受来自本地计算机的连接,并禁止来自远程计算机的传入连接。目前,如果不修改IEDriverServer.exe的源代码,则无法更改。要在远程计算机上运行 Internet Explorer 驱动程序,请将 Java 独立远程服务器与语言绑定的 RemoteWebDriver 等效项结合使用。

所以我将 selenium-server-standalone-2.25.0.jar 下载到 windows 机器并启动它;我的 IEDriverServer.exe 被放入了我的 PATH 中的 C:\windows\system32\。然后我将 ubuntu 框中的代码更改为指向在 windows 框上运行的 selenium 服务器。但仍然没有运气。

我用谷歌搜索了一下,有些人成功地让它运行起来了。但他们似乎正在使用 java 绑定或 c# 绑定,我想他们是在本地机器上开发的。我还没有找到像我这样的工作案例:

一个 ubuntu 盒子,基于 PHP 的测试运行连接到在 Windows 上运行的远程 selenium 服务器。一个运行 selenium 独立服务器并在 PATH 中使用 IEDriverServer.exe 的 Windows 框

谢谢。

4

1 回答 1

11

我有一个类似的问题 - 在 Linux 上工作并希望针对 IE 11 运行我的 WD 测试 - 并让它工作。我和 OP 的主要区别在于我的测试是用 Java 编写的。

我的目标是这样的:

  • 我的工作站:Ubuntu 14.04,用 Java 编写的测试。
  • Windows 机器:一些带有 IE 11 的虚拟机。
  • 我想从 Ubuntu 工作站针对 Windows 机器上运行的 IE 运行测试(这样我就不需要在 Windows 机器上安装整个开发环境)。

我做了什么:

  1. 获得了从 Microsoft(此处)下载的 Win 7 和 IE 11 VirtualBox VM ,打开了它的电源。
  2. 下载到 Windows 框:(a) Java JRE,(b) Selenium Standalone Server jar(该页面上还没有提到“Internet Explorer Driver Server”),(c) Internet Explorer Driver
  3. 在我的工作站和 Windows 机器之间设置仅主机网络。是对该过程的一个很好的描述。尽管博文中的虚拟机是 Linux,但它对于 Windows 虚拟机的工作方式几乎相同(使用命令提示符下的“ipconfig”而不是“ifconfig”来查找您的 IP)。
  4. 在 Windows 机器上,配置了官方 Internet Explorer 驱动程序页面中提到的内容,在“必需配置”部分中。如果他们更改链接,我将它们粘贴在这里:
  • IEDriverServer 可执行文件必须下载并放置在您的 PATH 中。
  • 在 Windows Vista 或 Windows 7 上的 IE 7 或更高版本上,您必须将每个区域的保护模式设置设置为相同的值。该值可以打开或关闭,只要每个区域都相同。要设置保护模式设置,请从“工具”菜单中选择“Internet 选项...”,然后单击“安全”选项卡。对于每个区域,标签底部都会有一个标记为“启用保护模式”的复选框。
  • 此外,对于 IE 10 及更高版本,必须禁用“增强保护模式”。此选项位于 Internet 选项对话框的高级选项卡中。
  • 浏览器缩放级别必须设置为 100%,以便可以将本机鼠标事件设置为正确的坐标。
  • 仅对于 IE 11,您需要在目标计算机上设置一个注册表项,以便驱动程序可以保持与它创建的 Internet Explorer 实例的连接。对于 32 位 Windows 安装,您必须在注册表编辑器中检查的项是 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。对于 64 位 Windows 安装,密钥是 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BFCACHE。请注意,FEATURE_BFCACHE 子项可能存在也可能不存在,如果不存在,则应创建它。重要提示:在此键中,创建一个名为 iexplore.exe 且值为 0 的 DWORD 值。

请注意,我不需要将IEDriverServer.exe' 位置放在 PATH 中,并且在我的 IE 11 设置中找不到“增强保护模式”(所以没有这样做)。

  1. 在 Windows 机器上,从命令提示符开始(它们必须都在运行;我从关于这个问题的帖子中弄清楚了):
    • java -jar selenium-server-standalone-2.53.1.jar
    • IEDriverServer.exe
  2. 将我的测试的设置部分编辑为使用RemoteWebDriver,如下所示(192.168.56.101 是 Windows 框的仅主机网络 IP):

    DesiredCapabilities capability = DesiredCapabilities.internetExplorer();
    driver = new RemoteWebDriver(new URL("http://192.168.56.101:4444/wd/hub"),
        capability);
    
  3. 像往常一样从我的 Ubuntu 工作站运行测试: mvn test myproject

它奏效了!:)

于 2016-07-06T14:36:35.490 回答