首页 > 编程语言 >Appium+python自动化(三十三)- 本地调试测试代码,远程控制测试环境-Remote(超详解)

Appium+python自动化(三十三)- 本地调试测试代码,远程控制测试环境-Remote(超详解)

时间:2024-07-01 20:00:35浏览次数:22  
标签:Appium 127.0 python appium 192.168 0.1 地址 localhost 测试环境

简介

  在前边所有涉及启动app的时候有这样一行代码driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps),很多小伙伴们和同学们不知道这个ip和端口哪里来的,我觉得有必要给小伙伴解释一下,于是宏哥决定写一篇关于这个appium的服务器ip文章! 来给大家答答疑,解解惑!这样就不会问一些比较幼稚的问题,让别人看了笑话,笑掉大牙了。eg:宏哥,宏哥,宏哥,那个我在测试服务器搭建测试环境,我是不是就只能在测试服务器上调试代码,然后进行测试了。那这样我还的搭建一套别写脚本的环境。。。。等等的傻白寡的问题,Remote 我们先给他相一相面,就知道它的意思是:远程。那么我们是不是把那个IP地址修改成测试服务器的IP,一切问题是不是就迎刃而解了。

目的

  一般来说appium中127.0.0.1这个地址的默认的不需要修改。在做自动化过程中,如果遇到需要远程操作的话,这个功能就可以派上用场了。想想看,如果公司给你单独配置一台跑自动化测试电脑,然后自己工作的电脑写脚本,在自动化机器上运行脚本,这样工作自动化两不误,是不是很爽呢? 

说明

127.0.0.1

127.0.0.1是环回(loopback)地址,用来测试本机的TCP/IP协议栈,比如你在cmd里输入:ping 127.0.0.1:

 

看到的就是向本机发送请求包,这个请求只会在你的本地跑,不会通过网络发送出去。

 “本地”,你一定还想到了localhost,打开你的hosts文件(右键选择用notenotepad++打开):

可以看到:

是的,127.0.0.1和localhost的是“等价的”:

localhost是个域名,性质跟 “www.baidu.com” 差不多。(不能直接绑定套接字,必须先gethostbyname)转成IP才能绑定——括号里的字我也不太明白。也就是说你的localhost默认的ip就是127.0.0.1。

现在我们就可以这样理解了,地址写127.0.0.1的意思就是要在本地进行访问:

我们把地址直接写成localhost,这样也是可以调通的。

端口号:4723

这个值不是固定的,唯一的要求就是——不要冲突,你可以在cmd你查看目前占用的端口号,输入命令

netstat -ano查看所有端口占用;

netstat -ano | findstr “4723” 查看4723端口号被哪个程序占用

第一个没有查看到程序,因为宏哥没有开启appium

宏哥开始启动appium第二个查看到了

也可以打开你的appium:

   

在这里就可以修改端口号了,但是你在这里怎么改端口号,那么你代码里就要对应的修改端口号。

/wd/hub

将鼠标定位到remote 放在上边,然后按住Ctrl点击鼠标左键进入源码,我们来看源码:

可以看到,WebDriver类在初始化时也定义了一个地址,除了端口号不一样其它的和我们传的是一样的。因此我们就可以简单的把/wd/hub理解为——(乌龟的屁股--龟腚)规定。

设置IP 

1.打开appium>General Setting界面

2.这里用个appium默认的服务端地址127.0.0.1端口4723,一般在自己机器上调试,无需修改

访问地址

1.代码里面的那个地址到底指向的是哪里呢?

启动appium服务后,在浏览器输入:http://127.0.0.1:4723/wd/hub。出现如下图所示,说明服务启动成功,可以把appium看出是一个服务端。

2.appium后台访问日志

配置测试机

1.一台工作电脑,一台跑自动化测试的电脑,如何用工作的电脑远程控制自动化测试的那台电脑呢?

2.测试电脑上的appium服务地址改成本机IP地址如:192.168.1.1(注意注意注意!!!这里要是本机的ip地址)

3.启动测试电脑上的appium。(可以看到日志启动的address 192.0.0.1,port 4723)

远程操作

1.在自己工作电脑上打开浏览器输入:192.168.1.1:4723/wd/hub。这一步很重要,一定要看到如下界面,确认远程链接成功.

 2.脚本里面的代码修改下地址

3.测试机上环境准备好后,在本机上运行脚本,于是测试机上可以自动运行了。 

小结

1.首先 localhost 是一个域名,在过去它指向 127.0.0.1 这个IP地址。在操作系统支持 ipv6 后,它同时还指向ipv6 的地址 [::1]
在 Windows 中,这个域名是预定义的,从 hosts 文件(c:\windows\system32\drivers\etc\hosts)(etc/hosts)中可以看出:
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
而在 Linux 中,其定义位于 /etc/hosts 中:
127.0.0.1 localhost
注意这个值是可修改的,比如我把它改成
192.068.206.1 localhost
然后再去 ping localhost,提示就变成了
PING localhost (192.168.206.1) 56(84) bytes of data.
当然一般人不会像我这么蛋疼。
————分割线—说完localhost再说127.0.0.1————
127.0.0.1 这个地址通常分配给 loopback 接口。loopback 是一个特殊的网络接口(可理解成虚拟网卡),用于本机中各个应用之间的网络交互。只要操作系统的网络组件是正常的,loopback 就能工作。Windows 中看不到这个接口,Linux中这个接口叫 lo:
#ifconfig
eth0 Link encap:Ethernet hwaddr 00:00:00:00:00:00
inet addr :192.168.0.1 Bcase:192.168.0.255 Mask:255.255.255.0
......
lo Link encap:Local Loopback
inetaddr: 127.0.0.1 Mask: 255.0.0.0
......
可以看出 lo 接口的地址是 127.0.0.1。事实上整个 127.* 网段都算能够使用,比如你 ping 127.0.0.2 也是通的。
但是使用127.0.0.1作为loopback接口的默认地址只是一个惯例,比如下面这样:
#ifconfig lo 192.168.128.1
#ping localhost #糟糕,ping不通了
#ping 192.128.128.1 # 可以通
#ifconfig lo
lo Link encap:Local Loopback
inetaddr: 192.168.128.1 Mask: 255.255.255.0
......
当然,一般人更不会像我这样蛋疼。如果随便改这些配置,可能导致很多只认 127.0.0.1 的软件挂掉。
————分割线—说完127.0.0.1再说本机地址————
确切地说,“本机地址”并不是一个规范的名词。通常情况下,指的是“本机物理网卡所绑定的网络协议地址”。由于目前常用网络协议只剩下了IPV4,IPX/Apple Tak消失了,IPV6还没普及,所以通常仅指IP地址甚至ipv4地址。一般情况下,并不会把 127.0.0.1当作本机地址——因为没必要特别说明,大家都知道。
本机地址是与具体的网络接口绑定的。比如以太网卡、无线网卡或者PPP/PPPoE拨号网络的虚拟网卡,想要正常工作都要绑定一个地址,否则其他设备就不知道如何访问它。

————最后总结一下区别————

  • localhost 是个域名,不是地址,它可以被配置为任意的 IP 地址,不过通常情况下都指向 127.0.0.1(ipv4)和 [::1](ipv6)
  • 整个127.* 网段通常被用作 loopback 网络接口的默认地址,按惯例通常设置为 127.0.0.1。这个地址在其他计算机上不能访问,就算你想访问,访问的也是自己,因为每台带有TCP/IP协议栈的设备基本上都有 localhost/127.0.0.1。
  • 本机地址通常指的是绑定在物理或虚拟网络接口上的IP地址,可供其他设备访问到。
  • 最后,从开发度来看
    • localhost是个域名,性质跟 “www.baidu.com” 差不多。不能直接绑定套接字,必须先gethostbyname转成IP才能绑定。
    • 127.0.0.1 是绑定在 loopback 接口上的地址,如果服务端套接字绑定在它上面,你的客户端程序就只能在本机访问。
    • 如果主机中存在多个网卡,分别连接不同的物理网络,比如 192.168.0.1/255.255.255.0 和 192.168.1.1/255.255.255.0,那么当你的服务端套接字绑到 192.168.0.1 这个地址上时,位于 192.168.1.* 网段的其他计算机是无法连接的,只有位于192.168.0.* 网段的计算机才能访问你的服务端程序。

2.好了,今天就分享到这里,想必各位小伙伴和童鞋们对这一行代码衍生出来的问题都有了一个新的认识。

标签:Appium,127.0,python,appium,192.168,0.1,地址,localhost,测试环境
From: https://blog.csdn.net/qq_23827149/article/details/140108891

相关文章

  • Python学习笔记(二)
    目录while循环语句while循环的嵌套应用补充知识for循环函数猜数字游戏作业while循环语句练习:while循环的嵌套应用注:结束时i=i-1补充知识九九乘法表实例for循环练习:例如解决方案:再外部定义一个i=0for循环的嵌套break和continue的应用练......
  • Python学习笔记(一)
    目录 什么是变量​编辑数据类型转换语句标识符​编辑运算符​编辑字符串格式化数据输入python判断语句if语句​编辑if  elif  else常用的值类型:凡是被双引号包裹起来的都是字符串print输出,可以同时输出多个内容,用逗号隔开单行注释#  多行注释"""......
  • python 中的 下划线_ 是啥意思
    在Python中,_(下划线)通常用作占位符,表示一个变量名,但程序中不会实际使用这个变量的值。目录忽略循环变量:忽略函数返回值:在解释器中使用:举例子1.忽略循环变量2.忽略不需要的函数返回值3.多次使用`_`忽略多个值4.忽略值的解包5.在列表推导式中使用`_`6.在解释器......
  • 【Python机器学习】模型评估与改进——对交叉验证的更多控制
    在k交叉验证中,可以利用cv参数来调节cross_cal_score所使用的参数。但scikit-learn允许提供一个交叉验证分离器作为cv参数,来对数据划分过程进行更精细的控制。对于大多数使用场景而言,回归问题默认的k折交叉验证与分类问题的分层k折交叉验证的表现都很好,但有些情况下可能希望使......
  • Python数据可视化
     基于asciichartpyimportasciichartpydata=[1,2,3,4,5,4,3,2,1]chart=asciichartpy.plot(data)print(chart) 基于sparklinesimportsparklinesdata=[1,2,3,4,5,4,3,2,1]sparkline_str=''.join(sparklines.sparklines(data))p......
  • 用Python pynput库捕捉每一次组合键的优雅舞步
    哈喽,大家好,我是木头左!一、初识pynput:键盘与鼠标的监控利器当谈论计算机交互时,键盘和鼠标无疑是最常用的设备。无论是编写代码、浏览网页还是玩游戏,都依赖于这些输入设备与机器沟通。但在一些特殊的场景中,可能需要知道用户具体按下了哪些键,甚至是以何种顺序、何种速度进行操作......
  • 华为OD机试D卷 --智能成绩表--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例题目解析算法源码题目描述小明来到某学校当老师,需要将学生按考试总分或单科分数进行排名,你能帮帮他吗?输入描述第1行输入两个整数,学生人数n和科目数量m。0<n<1000<m<10第2行输入m个科目名称,彼......
  • 华为OD机试D卷 --最富裕的小家庭--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例题目解析算法源码题目描述在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为一个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。输入描述第一行为一......
  • 华为OD机试D卷 --最多购买宝石数目--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例1用例2用例3用例4题目解析算法源码题目描述橱窗里有一排宝石,不同的宝石对应不同的价格,宝石的价格标记为gems[i]0≤i<nn=gems.length宝石可同时出售0个或多个,如果同时出售多个,则要求出售的宝石编号连续;......
  • 华为OD机试D卷 --最大括号深度--24年OD统一考试(Java & JS & Python & C & C++)
    文章目录题目描述输入描述输出描述用例题目解析算法源码题目描述现有一字符串仅由‘(‘,’)’,‘{‘,’}’,’[‘,’]’六种括号组成。若字符串满足以下条件之一,则为无效字符串:①任一类型的左右括号数量不相等;②存在未按正确顺序(先左后右)闭合的括号。输出......