QTA nodename nor servname provided, or not known问题解决

1、部署好本地的qta环境,部署远程机器的qta环境,发现报错,具体为

image.png

了解到qti的Q&A里面有解决方法,按照方法试了很多遍,都不行。
后来第二天又直接删除那三个文件,重启,然后执行用例,发现又可以了。

但是后来自己又直接删除那三个文件,重启,执行用例,又不能通过了,这个问题太随机了。

而且考虑到,后期真的用上了这个框架,必须保持100%稳定性。这个问题必须解决,解决不了,也必须换方案。要不然责任担不起啊。

问腾讯测开,他们也没什么好建议。

只能自己去分析,首先查看出错位置

class DeviceResource(object):
    '''设备资源
    '''
    
    def __init__(self, host, port, udid, is_simulator, name, version, csst_uri=None, resource_id=None):
        if host == socket.gethostbyname(socket.gethostname()):  #这行出错
            host = DEFAULT_ADDR
        self._host = host
        self._port = port
        self._udid = udid
        self._name = name
        self._version = version
        if csst_uri:
            self._ws_uri = "ws://%s/proxy/control-%s" % (csst_uri, udid)
        else:
            self._ws_uri = None
        self._driver_url = 'http://%s:%d' % (host, port)
        self._is_sim = is_simulator
        self._resource_id = resource_id

那我就去命令行输出socket.gethostname()和socket.gethostbyname(socket.gethostname())
发现第一个是输出hostname,没什么问题,第二个输出就是错误。那看来找到问题了。就是这个地方有问题。
怎么解决?

腾讯测开说是域名问题,那我首先查看电脑ip。
通过这句可以看到ip ifconfig | grep "inet " | grep -v 127.0.0.1
发现我自己电脑是一个ip,测试机有两台ip

image.png

image.png

向腾讯测开询问了下,知道169是个假的ip地址。刚开始还以为问题在这,但是发现他们的解决方法都是硬件

还是不对,那思路回到出错的语句。于是:
Google搜socket.gethostbyname(socket.gethostname()) gaierror: [Errno 8] nodename nor servname provided, or not known
第一个stock overflow点击去。
看到

image.png

点击这个地址
按照他说的,我先终端输出hostname,然后记下hostname,然后执行ping hostname值,发现确实报错和里面提到的一样,有希望了。于是按照他的步骤操作

I’ve tried the following:
Rebooting.
Switching off the Firewall.
Changing my local hostname, using System Preferences > Sharing > Edit.
sudo killall -HUP mDNSResponder
dscacheutil -flushcache
sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

这样操作之后,执行
ping hostname值,发现报错和之前一样,于是看下面回到,找到一个提示


image.png

于是我把文件分享打开,然后再ping
正常了。完美解决问题。


image.png

image.png

满怀信心的去执行用例,发现它启动了虚拟器ipad,我明明连着手机。


image.png

但是发现手机跳出一个弹框,提示我信任手机。我再次执行,还是调ipad,但是又跳信任弹窗。
第三次我再执行,终于连手机了。

这个问题困扰很久了。后来也是自己分析,这个问题必须解决,不能随机,要不然后面影响太大了。最终解决。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Socket创建函数 socket.socket(socket_family, socket_type, prot...
    JianMing阅读 6,030评论 1 13
  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 3,547评论 0 6
  • 网络编程 一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运...
    go以恒阅读 2,097评论 0 6
  • 1、TCP状态linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lso...
    北辰青阅读 9,511评论 0 11
  • 陌上锦花玉瘦人。蹙额愁黛洛神魂。秋眸沧海亦如深。曾道情深真去写,却然雨断月残心。八风吹散几生恩。
    00b5d81e44e8阅读 308评论 0 0