据我所知,有两种方法可以在Windows上设置selenium服务器(只是一个节点):
但是,使用服务方式(没有桌面可用),无法使用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包中。
所以,我的问题是,设置中缺少的谜题是什么?
答案 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以这种方式工作。