在centOS环境搭建airtest时遇到 Xlib.error.DisplayNameError: Bad display name "" 和Xlib.error.XauthError异常
现在的问题
(airtestVenv) [root@67 airtest_selenium]# python3 proxy.py
Traceback (most recent call last):
File "proxy.py", line 10, in <module>
from airtest_selenium.utils.airtest_api import loop_find
File "/root/.virtualenvs/airtestVenv/lib/python3.6/site-packages/airtest_selenium/__init__.py", line 1, in <module>
from .proxy import WebChrome, Element
File "/root/.virtualenvs/airtestVenv/lib/python3.6/site-packages/airtest_selenium/proxy.py", line 13, in <module>
from pynput.mouse import Controller, Button
File "/root/.virtualenvs/airtestVenv/lib/python3.6/site-packages/pynput/__init__.py", line 40, in <module>
from . import keyboard
File "/root/.virtualenvs/airtestVenv/lib/python3.6/site-packages/pynput/keyboard/__init__.py", line 49, in <module>
from ._xorg import KeyCode, Key, Controller, Listener
File "/root/.virtualenvs/airtestVenv/lib/python3.6/site-packages/pynput/keyboard/_xorg.py", line 39, in <module>
from pynput._util.xorg import (
File "/root/.virtualenvs/airtestVenv/lib/python3.6/site-packages/pynput/_util/xorg.py", line 40, in <module>
_check()
File "/root/.virtualenvs/airtestVenv/lib/python3.6/site-packages/pynput/_util/xorg.py", line 38, in _check
display = Xlib.display.Display()
File "/root/.virtualenvs/airtestVenv/lib/python3.6/site-packages/Xlib/display.py", line 89, in __init__
self.display = _BaseDisplay(display)
File "/root/.virtualenvs/airtestVenv/lib/python3.6/site-packages/Xlib/display.py", line 71, in __init__
protocol_display.Display.__init__(self, *args, **keys)
File "/root/.virtualenvs/airtestVenv/lib/python3.6/site-packages/Xlib/protocol/display.py", line 84, in __init__
name, protocol, host, displayno, screenno = connect.get_display(display)
File "/root/.virtualenvs/airtestVenv/lib/python3.6/site-packages/Xlib/support/connect.py", line 73, in get_display
return mod.get_display(display)
File "/root/.virtualenvs/airtestVenv/lib/python3.6/site-packages/Xlib/support/unix_connect.py", line 76, in get_display
raise error.DisplayNameError(display)
Xlib.error.DisplayNameError: Bad display name ""
我以为是我改的proxy.py脚本在centos系统中运行有问题,早上来了直接python3 proxy.py (未修改的脚本)也是报这个错,说明不是我改的问题,而是环境有问题
无意中在虚拟环境中看到了xlib这个文件夹,反应过来,这是一个包
查了一下xlib是干什么的
https://cloud.tencent.com/developer/ask/202120


非常椿的博客!
https://www.cnblogs.com/js1314/p/10373332.html
xhost + 是什么
(airtestVenv) [root@67 demoAir.air]# xhost +
xhost: unable to open display ""
(airtestVenv) [root@67 demoAir.air]# xdpyinfo
xdpyinfo: unable to open display "".
(airtestVenv) [root@67 demoAir.air]# xhost +
xhost: unable to open display ""
(airtestVenv) [root@67 demoAir.air]# export DISPLAY=:0
(airtestVenv) [root@67 demoAir.air]# xhost +
access control disabled, clients can connect from any host
错误变了

把错误信息扒下来,发现问题的源在airtest_selenium包下的proxy.py这个文件,圈红的这一行
既然运行这行代码会报错(我有单独放一个PY文件来验证想法,只放这一句代码,在本地跑不错,在centOS中跑就会出来上图一模一样的错误 )
那我注销掉是不是就不会报错了呢,注销会有什么影响吗?先来试试的

oh no 结果是不能在公司的centOS服务器中运行airtest QAQ
为什么呢(因为公司的centOS服务器没有操作界面呀 )
因为 在proxy.py文件中有一行这样的代码
from pynput.mouse import Controller, Button
这行代码是用来干什么的呢
不知道哦
那我们先来看看注销掉这行代码会有什么效果
注销掉相关代码后再运行demoAir.py
运行脚本并生成log文件
wangju@wangju-HP-348-G4:~/Airtest/demoAir.air$ airtest run demoAir.py --log log/
生成log.html文件
wangju@wangju-HP-348-G4:~/Airtest$ airtest report demoAir.air --log_root demoAir.air/log/ --outfile demoAir.air/log/log.html --
lang zh
打开日志文件夹,咦,奇怪,没有截图呢
再来看一看 不注释这行代码生成的日志文件内容 是啥样的

再来打开log.html文件看一看
是酱婶儿的

由此我们可以知道 pynput是和屏幕操作相关的,记录鼠标呀,键盘呀这些设备的操作
而如果我们把这样的代码注释掉,脚本是可以跑通的,因为我们可以配置浏览器的 --headleses 属性 使脚本 无界面 运行.
决策点就是,是否需要这份可视化的报告,
需要:给服务器安装图形化界面 或 直接放到有图形化界面的系统中去运行
这也说明了为啥程序在我本地能跑通(ubuntu)
而放到centOS中去跑的时候就会报错,因为我ubuntu有操作界面啊
在centOS环境搭建airtest时遇到 Xlib.error.DisplayNameError: Bad display name "" 和Xlib.error.XauthError异常的更多相关文章
- centos环境搭建
1.php -v 与phpinfo(); 不符,查看centos是否有自带的php:更改centos环境变量 /etc/profile,source /etc/profile生效: 2.pecl ...
- Unix/Linux环境C编程入门教程(2) CentOS环境搭建
Unix/Linux版本众多,我们推荐Unix/Linux初学者选用几款典型的Unix/Linux操作系统进行学习. 本文就带大家来安装CentOS并且配置好C/C++开发环境,这是一款Linux. ...
- CentOS环境搭建(JDK安装、mysql安装、hadoop安装等)
1.1准备权限:让普通用户具备sudo执行权限 切换到root用户,su # vi /etc/sudoers/ 添加 koushengrui ALL=(ALL) ALL 这里很容易 ...
- centos 环境搭建jenkins服务
1.下载jenkins war包 https://jenkins.io/download/ 选择Generic Java package (.war)下载2.下载apache tomcat 8 htt ...
- .netcore centos环境搭建实战
步骤 1. 安装VMware Workstation 下载地址:https://my.vmware.com/cn/web/vmware/info/slug/desktop_end_user_compu ...
- nodejs Centos环境搭建
使用二进制文件安装: node 环境下载 https://nodejs.org/en/download/ 下载里面的windows 安装包 和 linux 安装包 1)windows安装 window ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(二十六)Structured Streaming:WARN clients.NetworkClient: Error while fetching metadata with correlation id 1 : {my-topic=LEADER_NOT_AVAILABLE}
问题描述: 我之前使用kafka的命令删除了改topic: ./kafka-topics.sh --delete --zookeeper [zookeeper server] --topic [to ...
- 如何在linux搭建airtest+chromeweb测试环境--(用命令行运行.air脚本)
大前堤: 如果你需要airtest提供的可视化测试报告,那你的操作系统,一定要有图形化界面. 否则运行你的airtest脚本 会遇到这样的问题 Xlib.error.DisplayNameError: ...
- Ionic2开发环境搭建-VS 2017
原文:Ionic2开发环境搭建-VS 2017 目前在VS 2017中创建Ionic2版本项目 注:在VS中开发Ionic项目,使用的Ionic(v2.x),Cordova(v6.3.1),Angul ...
随机推荐
- Cisco路由器配置ADSL上网
cisco1841#sh run Building configuration... Current configuration : 2970 bytes ! version 12.4 service ...
- 新手学測试----Unit Test(单元測试)
在程序猿做项目的过程中,每当完毕一个功能,首先自己须要对完毕的功能进行測试.我如今正在做的项目用的工具是VS2012.那么接下来,就说一说在VS2012中是怎样创建单元測试的. 怎样创建单元測试? 在 ...
- TwoSum leetcode
class Solution { public: vector<int> twoSum(vector<int>& nums, int target) { vector& ...
- srm 539
http://mlz000.github.io/2015/07/15/srm-539/ 250 Description: 从若干个盒子中随意选择几个装石头.每一个盒子容量都有上下限,一旦选择使用某个盒 ...
- [1525] Cow Xor
问题描述 农民约翰在喂奶牛的时候被另一个问题卡住了.他的所有N(1 <= N <= 100,000)个奶牛在他面前排成一行(按序号1..N的顺序),按照它们的社会等级排序.奶牛#1有最高的 ...
- bzoj 3312 No Change
题目大意: 到商场购物,他的钱包里有K个硬币 想按顺序买 N个物品,第i个物品需要花费c(i)块钱 在依次进行的购买N个物品的过程中,可以随时停下来付款,每次付款只用一个硬币 支付购买的内容是从上一次 ...
- POJ1061 青蛙的约会 exgcd
这个题虽然很简单,但是有一个比较坑的地方,就是gcd不一定是1,有可能是别的数.所以不能return 1,而是return a; 题干: Description 两只青蛙在网上相识了,它们聊得很开心, ...
- Java多线程相关的常用接口
Runnable 是一个接口,里面只声明了一个方法run();返回值为void所以无法拿到执行完的结果.只能通过共享变量或者线程通信来搞定.Future就是对具体的Runable或者Callable任 ...
- 客户端JavaScript基础 网页上的输入输出
创建: 2017/10/06 完成: 2017/10/07 更新: 2017/10/15 增加了通过事件监听器登陆事件的方法的链接 # TODO: 补充 基于Canvas的图象 客户端Java ...
- J20170618-hm
番兵(ばんぺい) 哨兵 後始末 善后