• 12
  • 12
分享
  • Appium+Python移动端实战——教你如何xpath定位自动化
  • 曼倩诙谐 2020-12-29 16:01:42 字数 2362 阅读 1434 收藏 12

一、前提

开启模拟器(我的是直接用的Android Studio的模拟器,所以在开启模拟器之前我还要开启Android Studio)

打开appium服务器

打开pycharm

打开cmd

二、上实战

打开模拟器

在cmd中输入代码:

adb shell dumpsys window | findstr mCurrentFocus

可查询到包名和界面名(界面名可以省略包名,但是我害怕漏了那个点,一般都不省略)

比如说我的包名:

com.google.android.apps.messaging

界面名

.conversation.screen.ConversationActivity

or

com.google.android.apps.messaging.conversation.screen.ConversationActivity

1.png

打开appium,进入服务器,点击搜索框,进入界面

2.png

点击

3.png

进入编辑界面,在框里面输入代码连接模拟器

代码如下

下面的代码注释:
第一条:平台的名字,不区分大小写,“Android”;“ios”
第二条:平台的版本,可以不写后续版本号
第三条:设备的名字,不能为空 (cmd后 adb devices可以看)
第四条:要打开的应用程序包名(上面cmd的命令可查出来)
第五条:要打开的应用程序的界面名(上面cmd的命令可查出来)
第六条:设备的名字
{
  "platformName": "Android",
  "platformVersion": "5.0",
  "deviceName": "emulator-5554",
  "appPackage": "com.google.android.apps.messaging",
  "appActivity": "com.google.android.apps.messaging.ui.ConversationListActivity",
  "udid": "emulator-5554"
}

4.png

填完之后记得保存

5.png

在点击Start Session,就可以进入appium的自动化界面,模拟器也会自动跟着运行

6.png

接下来我们就来查看我们要按的键的xpath路径,点击我想要自动运行的键,在Select Element中可以看到xpath路径。

7.png

将路径的中括号部分保留下来,例如我的是

//android.widget.Button[@content-desc="Start chat"]

需要的是

[@content-desc="Start chat"]

但放在pycharm中的会有报错,因此就需要换引号(这个自行调整就是)

于是放在pycahrm 中的python代码就应该是

driver.find_element_by_xpath("//*[@content-desc='Start chat']").click()  #点击事件

上实战代码

from appium import webdriver
import time
desired_caps=dict()
desired_caps['platformName']='Android'#平台的名字,不区分大小写,“Android”;“ios”
desired_caps['platformVersion']='5.0'#平台的版本,可以不写后续版本号
desired_caps['deviceName']='emulator-5554'#设备的名字,不能为空
# desired_caps['appPackage']='com.google.android.apps.messaging' #要打开的应用程序包名
# desired_caps['appActivity']='.ui.ConversationListActivity'#要打开的应用程序的界面名
desired_caps['udid']='emulator-5554'#连接设备的唯一标识
driver=webdriver.Remote('http://localhost:4723/wd/hub',desired_caps)#连接 appium 服务器
driver.start_activity("com.google.android.apps.messaging", "com.google.android.apps.messaging.ui.ConversationListActivity") #包名(前面是包名,后面是界面名)
time.sleep(3)
driver.find_element_by_xpath("//*[@content-desc='Conversation list']").click()  #点击事件
time.sleep(3)
driver.find_element_by_xpath("//*[@content-desc='Start chat']").click()  #点击事件
time.sleep(5)
driver.quit()
#如何定位一组元素,比如说我要打开设置的第三个选项
# driver.start_activity("com.android.settings",".Settings")
# A=driver.find_elements_by_class_name("android.widget.LinearLayout")
# A[6].click()
# time.sleep(5)
# driver.quit()

随后,我的app就可以自动运行了

如下

8.gif


作者:我一个超级无敌可爱的人鸭

原文链接:https://blog.csdn.net/hanhanwanghaha/article/details/111316397#comments_14392271

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   1、添加Jdbc Request  2、添加ForEach控制器(右键线程组->逻辑控制器->ForEach控制器)  ①输入变量的前缀:mobilephone;  从jdbc request设置的变量得知,我们要取的值为mobilephone_1、mobilephone_2、mobilephone_3......所以这里输入mobilephone  ②Start index for loop:0  变量循环启动的索引,第一个元素起始索引+1End index for loop:6;变量循环结束的索引。所以这里是取值mobilephone_1、mobilephone_2、......
            0 0 162
            分享
          • 1.就目前Selenium只能做Web跟Android App方向的自动化是吗?像IOS App跟 Windows桌面应用的自动化就无法用Selenium实现对吗?selenium的创作团队很明确说了,他们只专注WEB测试.你如果想测试APP,可以看一下这篇文章:http://www.51testing.com/index.php?action-viewnews-itemid-4462121-php-12.Selenium的Web自动化,除了用Fire bug和Fire path 来获取页面元素进行定位,还有其他更好的方式吗?Firebug和Firepath,基本上足够你去...
            1 2 3978
            分享
          •   作为一个测试人员,报告相关人员影响系统的功能和威胁系统性能的问题是我们工作中的任务。  可能你常会遇到领导拦着问你:我们测试结果如何,还有故障吗?版本可以发布了吗?  但是如果你作为测试人员不知道系统的边界呢?如果你把测试结果的信心只是建立在应该一小部分测试的内容上,该怎么办?如果你不知道系统/解决方案如何或何时更改了怎么办?如果你缺乏这种控制,你怎么能说你对测试结果有信心呢?  其实这些问题与我们产品的可测性相关。如果我们获取知识的平台不稳定,我们怎么能够确保所学的东西是正确的呢?  举例说明  一个系统由许多子系统组成,解决方案由许多不同的参与者更新,一些人手动执行,一些人通过持续部署...
            0 0 467
            分享
          •      昨天的文章中给大家介绍到了批量生成企业数据,今天为大家贴上批量生成个人信息的代码。生成的个人信息数据如下截图:     批量生成个人信息的代码如下:from faker import Faker import xlwt faker = Faker('zh_CN') def add_user_info(number):     work_book = xlwt.Workbook(...
            4 2 3529
            分享
          • Selenium是一款基于Web页面的UI自动化测试框架支持多浏览器操作:Chrome、IE、Firefox、Safaria等;支持夸平台,Windows、Linux、Mac等;持多语言,Python、Java、Ruby、C#等。1、Selenium webdriver 原理:Webdriver是按照Client/Server模式设计的Client:编程语言客户端Server:浏览器驱动程序。用来接收客户端的请求并驱动浏览器执行操作然后返回结果Selenium代码与浏览器驱动程序之间是通过http协议进行数据交互的。这种方式,不在乎客户端是什么样的形式,只要数据的格式和协议是服务端能够解析的就...
            0 0 733
            分享
      • 51testing软件测试圈微信