爬坑指南

一.项目背景是需要在linux部署web自动化,在不是用docker容器的情况下踩坑。。。
安装python3环境,亲测无坑:
1.安装相应的编译工具
在root用户下(不要用普通用户,麻烦),全部复制粘贴过去,一次性安装即可.

yum -y groupinstall "Development tools"
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
yum install -y libffi-devel zlib1g-dev
yum install zlib* -y

2.下载安装包

wget wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tar.xz

3.解压

tar -xvJf  Python-3.7.2.tar.xz

4.创建编译安装目录

mkdir /usr/local/python3 

5.安装

cd Python-3.7.2
./configure --prefix=/usr/local/python3 --enable-optimizations --with-ssl 
#第一个指定安装的路径,不指定的话,安装过程中可能软件所需要的文件复制到其他不同目录,删除软件很不方便,复制软件也不方便.
#第二个可以提高python10%-20%代码运行速度.
#第三个是为了安装pip需要用到ssl,后面报错会有提到.
make && make install

6.创建软链接

ln -s /usr/local/python3/bin/python3 /usr/local/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3

7.验证是否成功

python3 -V
pip3 -V

出现问题参考这篇文章:https://www.cnblogs.com/xiujin/p/11477419.html

环境安装完毕后接下来安装谷歌浏览器和驱动

1.root用户下进入到etc/yum.repos.d目录下

cd /etc/yum.repos.d

2.编写镜像仓库配置文件
输入命令vi google-chrome.repo
文件内容如下

[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl.google.com/linux/linux_signing_key.pub

3.运行命令,安装浏览器

yum -y install google-chrome-stable --nogpgcheck

4下载好后查看版本

google-chrome --version

5.查看版本后需要下载对应的浏览器驱动
下载地址:http://chromedriver.storage.googleapis.com/index.html
可以采取手动好自动方式
手动: 进入上面网址下载好后放到linux
自动: wget 跟上对应版本的地址
6.解压chromedriver
unzip chromedriver_linux64.zip 后面这个名字需要注意自己文件是不是这个名字
7.移动chromedriver
mv chromedriver /usr/bin/
8.查看驱动是否安装完成
[root@centos-s-1vcpu-1gb-sfo1-01-niuyongliang yum.repos.d]# chromedriver
Starting ChromeDriver 2.40.565383 (76257d1ab79276b2d53ee976b2c3e3b9f335cde7) on port 9515
Only local connections are allowed.

接下来配置项目的浏览器参数

“–no-sandbox”参数是让Chrome在root权限下跑
“–headless”参数是不用打开图形界面
“--disable-dev-shm-usage”
    chrome_options = Options()
    chrome_options.add_argument('--no-sandbox')     
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_argument('--headless')
    # chrome_options.add_argument('--proxy-server=socks5://127.0.0.1:1120')
    driver = Chrome(executable_path='/home/centos/chromedriver', options=chrome_options)
    driver.get(r'file:{}'.format(html_path))  #打开报告
    passed=driver.find_element_by_xpath(('''// span[contains(text(), 'passed')]'''),).text
    success_num=eval(passed.split(' ')[0])  #获取成功数量
    failed=driver.find_element_by_xpath(('''// span[contains(text(), 'failed')]'''),).text
    driver.close()
    fail_num=eval(failed.split(' ')[0])#获取失败数量
    # print(fail_num)
    sum=success_num+fail_num
    # print(sum)
    success_percent=(success_num/sum)
    return  success_percent   #返回成功率

运行项目

踩坑:
1.关于窗口最大化
windows中的窗口最大化是driver.maximize_window(),但是发现在centos上的某个版本是无法最大化的,导致很多元素定位不成功。
解决办法,获取windows上放大前和放大后的尺寸

    size1=driver.get_window_size()
    print(size1)    #放大前
    #driver.maximize_window()   #放大
    #driver.fullscreen_window()
    size2=driver.get_window_size()
    print(size2) #放大后

然后查看下对应的百分比,在linux上按照同样百分比去设置窗口大小

driver.set_window_size(1500,1200)

2.关于文件上传
在windows上采用的是pyautogui,但是发现在linux上很多依赖的库无法安装,导致会报错

_display = Display(os.environ['DISPLAY'])
/usr/lib64/python2.7/UserDict.py:23: in __getitem__
raise KeyError(key)
E   KeyError: 'DISPLAY'

解决办法:查看上传按钮的div块内是否有input的file属性,如果有采用ele.send_keys(文件路径)

如果没有,我也没办法。。。

3.运行pytest报错unrecognized arguments: --html=report/test_wifi1593786393.4385414.html
inifile: None
缺少依赖库:pip3 install pytest-cov

你可能感兴趣的:(web)