Windows透过VNC server解决Selenium在远程桌面RDP关闭后无法正常运行问题

记录一下透过VNC server解决selenium不间断运行的问题。假如透过RDP协议远程到Windows,断开之后,Selenium脚本停止运行。网上主流解决方案都是定义一个脚本,我感觉比较烦,还不如安装VNC,3分钟解决问题。主要是后期使用起来比较连贯,也不影响现有的RDP 服务器。

本人的需求是使用selenium模拟操作chrome进行社交网站的发布,整个程序运行在Windows10 虚拟机里面。每次完成content的发布后,不会关闭chrome的页面,而是随机进行页面的刷新,确保这个窗口长期有效,从而避免频繁的二次验证。之所以这样做,就是为了获取一个长期有效的session。目前很多网站,假如你使用的是cookie注入的方式想要去获取一个有效的session,往往都会有一个二次确认等待着你。

那这个不是很简单吗?我远程桌面到windows里面,直接运行一下程序,不就可以了?但是你很快就会发现,一旦你关闭了远程桌面,你的selenium程序也就没办法继续操作chrome的网页了,selenium程序需要依赖监视器的运行。

目前网站的解决方案大多是写一个定制的close.bat的脚本,本文则介绍一个我认为,更加舒适一点的方案,也就是直接在windows上安装一个vnc server,再透过vnc client远程到windows进行操作,这样可以直接解决这个问题。

TL;DR

不管是TightVNC,还是RealVNC,都是同时有server和client端的,此处交叉安装,只是为了把两个软件都展示一下,各位安装时爱装哪个就装哪个。

vnc server的安装 TightVNC

此处我们选取的是TightVNC,下载地址:https://www.tightvnc.com/download.php

在此处做了一下裁剪,只安装了server相关的程序:

同时也建议,直接作为系统服务,这样的每次开机会自动启动vnc server服务。

设置vnc server的密码:

vnc client的安装 RealVNC

此处我们选取的是RealVNC viewer:https://www.realvnc.com/en/connect/download/viewer/

server的在这里:https://www.realvnc.com/en/connect/download/vnc/

安装的过程就是下一步,此处不再赘述。

VNC的默认端口为5901,假如你启动多个server,在不指定的情况下,会按照5902,5903的顺序依次调用端口。同时一般而言,假如你想要远程Mac系统,或者linux GNOME这种桌面服务,都是vnc协议,vnc viewer用途挺多的。

安装完成之后,新增一个connection,就可以直接连接了。假如端口非5901,需要:port进行指定。

输入密码,进入桌面,调整分辨率,就可以正常使用了。注意VNC协议不加密,建议只在内网的环境下使用。

远程服务器 RDP 断开之后,如何保持 selenium 可以正常运行。当远程桌面连接被停止时,Selenium运行失败。