不好意思,工作原因,鸽了一天,今天多更一篇吧
另外欢迎大家进来催更,点击并输入暗号:CSDN
上一篇介绍了在appium上启动app和两个定位元素的小工具使用方法,这篇就从appium的一种小方法:远程控制,以及如何把appium上的输入法调整成中文,算是两个小技巧吧
环境搭建篇【appium】appium自动化入门之环境搭建(上)
书接上文【appium】appium自动化入门之API(上)
下文指路【appium】appium自动化入门之API(下)——两万字API长文,建议收藏
正文
2.4 Remote 远程控制
前言
在启动 app 的时候有这样一行代码 driver= webdriver.Remote(‘http://192.168.1.1:4723/wd/hub’, desired_caps),很多 小伙伴不知道这个 ip 和端口哪里来的,于是小编决定写一篇关于这个 appium 的 服务器 ip 文章!
一般来说 appium 中 127.0.0.1 这个地址的默认的不需要修改。在做自动 化过程中,如果遇到需要远程操作的话,这个功能就可以派上用场了。想想 看, 如 果公司给你单独配置一台跑自动化测试电脑,然后自己工作的电脑写脚本,在自动化机器上运行脚本,这样工作自动化两不误,是不是很爽呢?
2.4.1 设置 IP
-
打开 appium>General Setting 界面
-
这里用个 appium 默认的服务端地址 127.0.0.1 端口 4723,==一般在自己机器上调试,无需修改 ==
2.4.2 访问地址
- 代码里面的那个地址到底指向的是哪里呢?
启动 appium 服务后,在浏览器输入:http://127.0.0.1:4723/wd/hub。出现如下图所示,说明服务启动成功,可以把 appium 看出是一个服务端。
2.4.3 配置测试机
-
一台工作电脑,一台跑自动化测试的电脑,如何用工作的电脑远程控制自动化测试的那台电脑呢?
-
测试电脑上的 appium 服务地址改成本机 IP 地址如:192.168.1.1(敲 黑板,记重点!这里要是本机的 ip 地址)
-
启动测试电脑上的 appium。
2.4.4 远程操作
-
在自己工作电脑上打开浏览器输入:192.168.1.1:4723/wd/hub。这一 步很重要,一定要看到如下界面,确认远程链接成功。
-
脚本里面的代码修改下地址
-
测试机上环境准备好后,在本机上运行脚本,于是测试机上可以自动运行了。
# coding=utf-8
from appium import webdriver
import time
desired _caps={
'platformName':'Android,
'deviceName':'30d4e606',
'platformVersion':'5:0',
'appPackage':'com.taobao.taobao',
'appActivity':'com.taobao.tao.welcome.welcome',
'unicodeKeyboard':True,
'resetKeyboard':True
}
driver=webdriver.Remote('http://192.168.1.1:4723/wd/hub',desired_caps)
2.5 输入中文
前言
在做 app 自动化过程中会踩很多坑,咱们都是用的中文的 app,所以首先要解决中文输入的问题!
本篇通过屏蔽软键盘,绕过手机的软键盘方法,解决中文输入问题。
2.5.1 定位搜索
- 打开淘宝点搜索按钮,进入到搜索页面
- 然后定位到搜索框后用 sendkeys 方法输入“hao”,这里定位元素用第 四篇讲的 uiautomatorviewer 工具就可以了
- 脚本如下图
# coding=utf-8
from appium import webdriver
import time
desired _caps={
'platformName':'Android,
'deviceName':'30d4e606',
'platformVersion':'5:0',
'appPackage':'com.taobao.taobao',
'appActivity':'com.taobao.tao.welcome.welcome',}
driver=webdriver.Remote('http://192.168.1.1:4723/wd/hub',desired_caps)
# 休眠五秒等待页面加载完成
time.sleep(5)
driver.find_element_by_id("come.taobao.taobao:id/home_searchedit").click()
time.sleep(2)
driver.find_element_by_id("come.taobao.taobao:id/")click()
driver.find_element_by_id("come.taobao.taobao:id/").send_keys(u"hao")
2.5.2 运行脚本
1.首先要确认手机上的输入法是用的什么输入法,如果==默认是中文的输入法,启动后会出现下面情况,无法输入成功 ==
2.于是可以先把手机上的输入法改成英文的状态,这样就可以输入英文字符串了。
2.5.3 屏蔽软键盘
-
通过前面的操作,大概可以知道,在 APP 里面输入字符串是调用的软键 盘输入的,有没办法像 selenium 做 web 自动化时候一样,直接 sendkeys 绕过键 盘输入呢?
-
于是可以想办法屏蔽软键盘,只需在 desired_caps{}设置里面加两个 参数(敲黑板,记重点!)
-
unicodeKeyboard 是使用 unicode 编码方式发送字符串
-
resetKeyboard 是将键盘隐藏起来
2.5.4 输入中文字符
- 将上面代码改成输入中文 u“点赞”,然后运行脚本,在手机上查看结果。(中文前面要加个 u)
# coding=utf-8
from appium import webdriver
import time
desired _caps={
'platformName':'Android,
'deviceName':'30d4e606',
'platformVersion':'5:0',
'appPackage':'com.taobao.taobao',
'appActivity':'com.taobao.tao.welcome.welcome',}
driver=webdriver.Remote('http://192.168.1.1:4723/wd/hub',desired_caps)
# 休眠五秒等待页面加载完成
time.sleep(5)
driver.find_element_by_id("come.taobao.taobao:id/home_searchedit").click()
time.sleep(2)
driver.find_element_by_id("come.taobao.taobao:id/")click()
driver.find_element_by_id("come.taobao.taobao:id/").send_keys(u"点赞")
- 如果显示中文字符为乱码时, 前面加上“#–coding:gb18030–”
- 如下图所示:
2.5.5 还原设置
- 当运行上面的脚本后,发现手动去输入时候,无法调出软键盘了,如何 恢复呢?
- 打开手机设置,找到输入法设置选项,会发现默认的输入法被改成 appium 的输入法了。所以只需把这里的设置,恢复成原来输入法就 OK 拉。
2.5.6最终脚本
# coding=utf-8
from appium import webdriver
import time
desired _caps={
'platformName':'Android,
'deviceName':'30d4e606',
'platformVersion':'5:0',
'appPackage':'com.taobao.taobao',
'appActivity':'com.taobao.tao.welcome.welcome',}
driver=webdriver.Remote('http://192.168.1.1:4723/wd/hub',desired_caps)
# 休眠五秒等待页面加载完成
time.sleep(5)
driver.find_element_by_id("come.taobao.taobao:id/home_searchedit").click()
time.sleep(2)
driver.find_element_by_id("come.taobao.taobao:id/")click()
driver.find_element_by_id("come.taobao.taobao:id/").send_keys(u"hao")
后话
希望这两个小技巧对大叫有帮助,有疑问或者有什么需要了解的可以点击并输入暗号:CSDN
下篇预告:API指令详解
转载:https://blog.csdn.net/Chaqian/article/details/109084219