赞
踩
目录
一、代码实现在windows下有界面执行,在linux下无界面执行
二、在linux环境下安装chrome、chromedriver、selenium
备注:最好的执行是jenkins+selenium grid插件,目前还不清楚jenkins的grid node如何配置……后续有时间再继续!!!
木文档主要记录关于web自动化python脚本在linux的无界面环境下的执行。但一般函数尽量不要静默执行,自测静默执行用例的失败率会提高,目前没有寻找到解决方式。
以下系简单的sample:
- from selenium import webdriver
- import sys
- def is_driver(no_ui=False):
- '''
- 1、判断是在什么环境下运行
- 2、no_ui win系统下默认为界面模式,无界面设为:True
- '''
- if 'linux' in sys.platform:
- option = webdriver.ChromeOptions()
- option.add_argument('headless') # 浏览器不提供可视化页面
- option.add_argument('no-sandbox') # 以最高权限运行
- option.add_argument('--start-maximized') # 最大化运行(全屏窗口)设置元素定位比较准确
- option.add_argument('--disable-gpu') # 谷歌文档提到需要加上这个属性来规避bug
- # option.add_argument('--window-size=1920,1080') # 设置浏览器分辨率(窗口大小)
- driver = webdriver.Chrome(options=option)
- else:
- if no_ui:
- ''' win系统下无界面模式 '''
- option = webdriver.ChromeOptions()
- option.add_argument('headless') # 浏览器不提供可视化页面
- option.add_argument('--start-maximized') # 最大化运行(全屏窗口)设置元素定位比较准确
- driver = webdriver.Chrome(chrome_options=option)
- else:
- driver = webdriver.Chrome()
- driver.maximize_window() # 将浏览器最大化
- return driver
-
-
- if __name__ == '__main__':
-
- driver = is_driver()
- driver.get('https://www.baidu.com/')
- print('title:', driver.title)
- print('执行完毕:!!!')
- driver.quit()
远程连接linux,mkdir创建一个目录,下载chrome;安装脚本会自动下载、安装chrome(合适的版本),并且目前两个系统中,所缺少的依赖,都会被安装
wget https://intoli.com/install-google-chrome.sh
然后授予可执行权限
chmod 755 ./install-google-chrome.sh
执行脚本
./install-google-chrome.sh
测试安装结果
google-chrome-stable --no-sandbox --headless --disable-gpu --screenshot https://www.baidu.com/
如果出现.表示安装成功!
查看linux 安装的谷歌浏览器版本
google-chrome --version
安装chromedriver一定要注意与chrome的大版本对应
在win上浏览器中访问https://npm.taobao.org/mirrors/chromedriver中找到对应版本的chromedriver,进入对应版本,复制下载链接;
wget https://npm.taobao.org/mirrors/chromedriver/75.0.3770.90/chromedriver_linux64.zip
解压后,将chromedriver复制到:usr/bin
cp chromedriver /usr/bin
修改其权限
chmod +x chromedriver
- yum install Xvfb
- pip install pyvirtualdisplay
- pip install selenium
安装完成之后,可以使用最上面第一点的代码运行,测试环境是否ok!
python unittest 失败用例重跑实现方式示例_冷凝娇的博客-CSDN博客_unittest用例失败重跑
一般项目的部署配置,这里就用不着讲述了,下面的内容记录一下关于selenium grid+jenkins实现分布式构建的部署(备注:目前可以实现hub部署;但是node的部署还没走通,先记录一部分,后续有时间研究通了再记录。)
webUI实现分布式执行,jenkins提供了插件支撑,下载selenium插件
jenkins进入:系统管理-插件管理-高级,上传,重启jenkins即可。【jenkins需要管理员账号】
重启后,这样selenium grid hub 已经启动,首页会有个selenium grid菜单,如图:
点击Selenium Grid,进入配置信息,此时,服务器上的分布式hub已启动,可以用于每一个node的连接,实现hub控制node执行任务(目前node还配置不来,但是有暂行方式)
没有用jenkins配置node,可以在操作pc上执行(前提:本地执行机包含对应jar包):
- 1.命令提示符cmd,cd到本地计算机放置selenium-server-standalone-3.9.1.jar的文件夹
- 2.执行:
- java -jar selenium-server-standalone-3.9.1.jar -role node -port 5555 -hub http://xxx.xx.xx.x:4444/grid/register
- #备注:http://xxx.xx.xx.x:4444/grid/register 中x是hub的ip地址,一定要注意是ip,而不是0.0.0.0;即便你hub设置了0.0.0.0,只是表示你主机运行所以ip访问,port也可自己配置;
- 2.1.指定chromedriver.exe
- 全命令:java -Dwebdriver.chrome.driver="D:\env\selenium-grid\chromedriver.exe" -jar selenium-server-standalone-3.9.1.jar -role node -hub http://xxx.xx.xx.x:4444/grid/register
- 2.2.指定firefox
- java -jar selenium-server-standalone-3.9.1.jar -role node -port 5555 -hub http://192.168.0.245:4444/grid/register -maxSession 5 -browser browserName=firefox,seleniumProtocol=WebDriver,maxInstances=5,platform=WINDOWS,version=83.0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。