通过vboxmanage guestcontrol启动IE9无法访问localstorage

时间:2013-07-24 07:30:06

标签: internet-explorer-9 local-storage virtualbox karma-runner

我们使用VirtualBox WinVista VM在IE9(和其他Windows浏览器)中测试我们的JavaScript应用程序。作为测试运行员,我们使用Karma。通过Karma github,我们找到了一个bash脚本,它启动IE9并在该浏览器中启动测试运行器。

这最重要的是,但是当我们想使用localStorage时,我们会收到“访问被拒绝”错误。但是,当我们在VM中手动启动浏览器时,我们可以毫无问题地访问localStorage。

似乎通过VBoxManage guestcontrol命令启动浏览器会影响用户权限,阻止浏览器访问硬盘上的localStorage目录。当然,我们正在为VboxManage使用相同的用户帐户并手动运行浏览器。

Chrome也显示了同样的问题,但我们可以将其重定向到公共目录。我们已经尝试更改指向IE9 localstorage目录的注册表项,但这似乎不起作用。

如果我们无法弄清楚这一点,我们将不得不回到之前的解决方案,使用Selenium WebDriver来运行测试,使得Karma不那么有用。

1 个答案:

答案 0 :(得分:0)

我几乎完全有同样的问题(如果不完全相同)。拔出我的头发试图使用runas.exe加载IE作为正确的用户,这修复了localStorage问题,它唉不允许业力正确连接。

事实证明,使用4.3版本的guest虚拟机添加的最新VirtualBox(当时为4.3)使得VBoxManage命令使用正确的用户加载IE,因此访问localStorage的权限。

我在shell脚本中使用的代码如下:

#!/bin/bash
CAPTUREURL=$1

VMNAME="IE9 - Win7"
LOGIN="IEUser"
PASSWORD="Passw0rd!"
SNAPSHOTNAME="Guest2"

VBoxManage snapshot "$VMNAME" restore "$SNAPSHOTNAME"

VBoxManage startvm "$VMNAME"

# Kill iexplore if it's already open
VBoxManage guestcontrol "$VMNAME" execute \
  --username "$LOGIN" \
  --password "$PASSWORD" \
  --image "C:\\Windows\\System32\\TaskKill.exe" \
  --verbose \
  --wait-stdout -- "/IM" "iexplore.exe" "/F"

# Wait for network to start up
sleep 10 # Can this be done in a better way?

VBoxManage guestcontrol "$VMNAME" execute \
  --username "$LOGIN" \
  --password "$PASSWORD" \
  --image "C:\\Program Files\\Internet Explorer\\iexplore.exe" \
  --verbose \
  -- "${CAPTUREURL/localhost/10.0.2.2}"

# Allow IE to boot up and connect before letting the script start
sleep 3

重新迭代并使其更清晰,VBoxManage版本< 4.3使用错误的用户加载浏览器,一个没有localstorage所需的权限。