【appium】appium自动化入门之API(中)

news/2024/10/27 22:29:38/

上一篇介绍了在appium上启动app和两个定位元素的小工具使用方法,这篇就从appium的一种小方法:远程控制,以及如何把appium上的输入法调整成中文,算是两个小技巧吧

 

目录
正文
2.4 Remote 远程控制
前言
2.4.1 设置 IP
2.4.2 访问地址
2.4.3 配置测试机
2.4.4 远程操作
2.5 输入中文
前言
2.5.1 定位搜索
2.5.2 运行脚本
2.5.3 屏蔽软键盘
2.5.4 输入中文字符
2.5.5 还原设置
2.5.6最终脚本
后话
 

正文

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

  1. 打开 appium>General Setting 界面

在这里插入图片描述

 

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

2.4.2 访问地址

1.代码里面的那个地址到底指向的是哪里呢?
    启动 appium 服务后,在浏览器输入:http://127.0.0.1:4723/wd/hub。出现如下图所示,说明服      务启动成功,可以把 appium 看出是一个服务端。

在这里插入图片描述

 

2.4.3 配置测试机

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

  2. 测试电脑上的 appium 服务地址改成本机 IP 地址如:192.168.1.1(敲 黑板,记重点!这里要是本机的 ip 地址)

在这里插入图片描述

     3.启动测试电脑上的 appium。

在这里插入图片描述

 

2.4.4 远程操作

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

在这里插入图片描述

 

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

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

# 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 定位搜索

  1. 打开淘宝点搜索按钮,进入到搜索页面
  2. 然后定位到搜索框后用 sendkeys 方法输入“hao”,这里定位元素用第 四篇讲的 uiautomatorviewer 工具就可以了
  3. 脚本如下图
# 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 屏蔽软键盘

  1. 通过前面的操作,大概可以知道,在 APP 里面输入字符串是调用的软键 盘输入的,有没办法像 selenium 做 web 自动化时候一样,直接 sendkeys 绕过键 盘输入呢?
  2. 于是可以想办法屏蔽软键盘,只需在 desired_caps{}设置里面加两个 参数(敲黑板,记重点!)在这里插入图片描述
  3. unicodeKeyboard 是使用 unicode 编码方式发送字符串
  4. resetKeyboard 是将键盘隐藏起来

 

2.5.4 输入中文字符

  1. 将上面代码改成输入中文 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"点赞")

  2. 如果显示中文字符为乱码时, 前面加上“#–coding:gb18030–”
  3. 如下图所示:

在这里插入图片描述

 

2.5.5 还原设置

  1. 当运行上面的脚本后,发现手动去输入时候,无法调出软键盘了,如何 恢复呢?
  2. 打开手机设置,找到输入法设置选项,会发现默认的输入法被改成 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


http://www.ppmy.cn/news/351323.html

相关文章

西方心理学史

参考视频:ilibilhttps://www.bilibili.com/video/av66994627/ 目录 一、导论1:学科性质2:研究对象3:研究方法等一些概念4:研究意义5: 习题 二、心理观念的起源1:起源条件:思维互渗律的解体2:起源时间3:起源的途径(推断)4&#xf…

知识图谱 helloword

早就听说 知识图谱. 最近看了一些文章,实践计算机科学helloword版本 如下: 从百度百科中搜集了诺贝尔奖历年的信息,做了一份 csv数据,结构化数据,文章最后面有。 (数据中最重要的head_of_family字段是我手工构造 实际…

用梯度下降的方法求平方根

设 y x y\sqrt{x} yx ​,则有 y 2 x y^2x y2x。 两边对 x x x 求导,得到: d ( y 2 ) d x d ( x ) d x 2 y d y d x 1 d y d x 1 2 y 1 2 x \begin{align} \frac{d(y^2)}{dx} & \frac{d(x)}{dx} \\ 2y\frac{dy}{dx} & 1 \\…

ubuntu环境下开启定时任务crontab

在工程化过程中遇到一个需求,需要在ubuntu环境下开启一个定时任务,定时执行sh脚本,下面参考网上的解决方案记录如下。 1、crontab linux中crontab命令用于设置周期性被执行的指令,该命令从标准输入设备读取指令,并将其…

window下安装docker并运行angular项目

window下安装docker并运行angular项目 1、使用场景 本地有一个node项目,node 版本是 v16.13.2,在本地安装的angular 是 15.2.4 但是测试服上面的node 版本是 14.19.3,angular 是1.0.0-beta.28.3 ,会导致angular项目的 ng build …

Ansible Copy 模块使用详解

Ansible copy模块是用于将文件从控制节点复制到远程服务器的模块。它可以将文件、目录或文本从控制节点复制到远程服务器,也可以创建目标目录。 下面是一些EXAMPLE: - name: Copy a single file to remote hostcopy:src: /path/to/local/file.txtdest:…

HTML文档引入JS模块出现路径问题

文章目录 前言一、错误情况1.three引入2.gsap引入 二、解决办法总结 前言 JS抽离, 引入three模块. LiveServer报错: Uncaught TypeError: Failed to resolve module specifier "three". Relative references must start with either "/", "./"…

搜搜关键词排名查询 - 站长工具

搜搜关键词排名查询 经常去站长工具那里,不过只提供了百度关键词排名功能,没有提供搜搜的关键词排名。 只好自己开发一个,方便自己,也方便他人 功能还在继续完善中,希望有识之士多提建议。 http://so.assoft.net.cn…