转载本文请联系AirPython公众号.一、前言大家好,我是安国!如果日常编写的Python自动化程序在本地运行稳定,可以考虑部署到服务器,结合定时任务,彻底解放双手。但是由于自动化程序涉及到平台兼容性,所以在服务器上运行时,有一些依赖库需要做特殊处理本文使用Selenium写的一个Python自动化程序,先来说说脚本部署服务器的详细过程安装桌面环境“以GNOME为例”,设置为图形模式启动,打开图形界面#安装GNOME桌面环境yumgroupinstall-y"GNOMEDesktop"#设置为图形模式启动systemctlset-defaultgraphical.target#Open图形界面startx2-2远程桌面的安装与配置以最常见的VNC为例。首先在服务器上安装VNCServer并设置登录密码#installvncserveryuinstalltigervnc-server-y#设置登录密码,用于vncviewer的登录密码vncpasswd然后,启动VNCServer,并打开对应的端口号#启用VNC服务systemctlstartvncserver@:1#设置systemctlenablevncserver@:1#查看VNC服务的端口netstat-lnpt|grepXvnc#打开端口号firewall-cmd--add-port=5901/tcp--permanentfirewall-cmd--reload最后下载VNCViewer,使用“IP地址+端口号+登录密码”远程连接服务器下载地址:https://www.realvnc.com/en/connect/download/viewer/PS:VNCServer显式指定IP地址+端口号2-3安装Chrome浏览器服务器默认安装的浏览器是FireFox,需要手动安装Chrome浏览器#下载最新的Chrome浏览器wgethttps://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm#安装浏览器yuminstallgoogle-chrome-stable_current_x86_64.rpm#查看Chrome浏览器版本google-chrome-version安装完成后发现Root用户无法启动Chrome浏览器PS:服务器Chrome浏览器确实不支持直接使用,需要用--no-sandbox参数启动#以--no-sandbox模式启动Chrome浏览器#方法一:命令行启动/usr/bin/google-chrome-stable--no-sandbox#方法2:修改Chrome浏览器如何启动快捷方式图标#启动方式:--no-sandbox2-4配置Chrome驱动并授权从官网下载相应版本的Chrome驱动:http://chromedriver.storage.googleapis。com/index.html解压后上传到服务器的“usr/bin”目录下。最后给chromedriver文件赋予可执行权限[root@localhostxh]#cd/usr/bin#Grantexecutablepermission[root@localhostbin]#sudochmod+xchromedriver2-5可视化运行测试将自动化脚本上传到服务器并设置运行在领导模式。注意:由于需要配置服务器的Chrome以no-sandbox模式启动,所以自动化脚本需要添加设置属性option=webdriver.ChromeOptions()#withnoneheadmoderun#option.add_argument('headless')选项.add_argument('no-sandbox')option.add_argument('disable-dev-shm-usage')option.add_experimental_option('useAutomationExtension',False)option.add_experimental_option('excludeSwitches',['enable-automation'])浏览器=webdriver.Chrome(chrome_options=option)“HeadlessMode”测试运行正常后,可以开启“HeadlessMode”,编写定时任务,将自动化脚本与定时任务相关联。指出在服务器端进行可视化调试测试是很有必要的,可以帮助我们提前定位兼容性问题
