在Windows上为Chrome和IE设置Selenium

时间:2016-09-12 08:58:01

标签: windows internet-explorer selenium

据我所知,有两种方法可以在Windows上设置selenium服务器(只是一个节点):

  1. 作为Windows服务
  2. 使用任务计划程序启动在本地用户帐户中运行的服务器
  3. 但是,使用服务方式(没有桌面可用),无法使用Internet Explorer。

    因此,我创建了一个本地用户帐户和一个计划任务,以便在启动时启动连接到用户帐户的selenium服务器(使用selenium-standalone软件包selenium-standalone start --drivers.ie.arch=ia32)。

    不幸的是,我遇到了“Session 0”问题,这需要真正登录本地用户帐户。否则,我会收到超时错误 适用于IE的Chrome和黑色屏幕截图,最高分辨率为1024x768 ......

    但是,对于活跃的用户会话,我仍然会收到IE的超时错误(Chrome正常工作)。浏览器发出初始GET请求(检索登录页面)但在此之后仍然卡住(下一步是使用量角器填充表单)。

    我读到了Headless Selenium for Windows,它为我提供了驱动程序和GUI之间的连接层。虽然,我不知道这是否有用,以及如何将其整合到selenium-standalone包中。

    所以,我的问题是,设置中缺少的谜题是什么?

2 个答案:

答案 0 :(得分:1)

我建议你放弃会话0,因为Chrome在不久的将来也试图摆脱Session 0。

你可以在这里找到更多的参考资料(下面链接中的注释21,但实际上整个帖子对于这个主题是一个很好的阅读):https://bugs.chromium.org/p/chromium/issues/detail?id=615396#c21

您现在可以尝试将此设置用于Chrome,但无法保证在Chrome启动会话0时它仍然有效。

var chromeOptions = new ChromeOptions();
chromeOptions.AddArguments("test-type");
chromeOptions.AddArguments("--disable-extensions");
chromeOptions.AddArguments("no-sandbox");
var driver = new ChromeDriver(chromeOptions);

我在使用Microsoft的测试代理时遇到了同样的问题,并将代理从Windows服务移动到进程,解决了我遇到的所有问题和麻烦。

答案 1 :(得分:0)

如上所述,有两种方法可以完成设置。但是,只有使用计划任务,我才能解决会话0问题(如@Cosmin所述)。使用NSSM和FireDeamon Pro是一个死胡同。

我重新配置了服务器,以自动登录本地用户帐户并更改了计划任务,当且仅当此用户已登录时才会运行(启动Selenium)。因此,在服务器启动后,用户会登录,这会触发任务调度程序(此时一个简单的启动脚本也应该起作用)来启动Selenium。

对于屏幕分辨率问题:VM设置使用Hyper-V,默认分辨率为1024x768。这可以很容易地改变(到屏幕适配器提供的最大分辨率)到1600x1200。

PS:Headless Selenium for Windows也不起作用(不能与量角器一起使用)。但是,即使这样也不再需要了。 IE以这种方式工作。