『App自动化测试之Appium应用篇』| 元素定位工具Appium-Inspector从简介、安装、配置到使用的完整攻略

简介: 『App自动化测试之Appium应用篇』| 元素定位工具Appium-Inspector从简介、安装、配置到使用的完整攻略

1 Appium-Inspector简介

  • Appium-InspectorAppium Desktop中自带的一个查看元素的工具;
  • 打开这个工具的前提下appium的服务是启动了;
  • 另外需要注意的是Appium最新安装方法是使用npm安装的,而不是Appium GUI方式安装,那么这里目前是没有Appium Desktop,也就没有Appium-Inspector工具了;
  • 所以需要单独安装Appium-Inspector

2 Appium Desktop中的Appium-Inspector

  • 如果是使用的Appium GUI方式安装的appium,那么就有Appium Desktop
  • Appium Desktop安装完成之后,双击打开:
    在这里插入图片描述
  • 点击 Start Server 按钮,启动 Appium server,并开启监听本机 4723 端口;
    在这里插入图片描述
  • 并且通过如下两种方式启动Appium Inspector
    在这里插入图片描述
  • 这种方式只有在旧版本的appium才有,但是我们用的最新版本的,需要单独安装了。

3 安装Appium-Inspector

  • 安装地址为:Appium-Inspector
    在这里插入图片描述
  • 选择对应系统的版本即可,我的是windows版本:
    在这里插入图片描述
  • 下载后双击Appium-Inspector-windows-2023.11.1.exe安装即可,安装完如下:
    在这里插入图片描述

    4 Appium-Inspector网页版

  • 如果不想安装,那可以直接使用Appium-Inspector网页版
    在这里插入图片描述

    5 Appium-Inspector界面说明

    5.1 Appium Server配置

  • Appium Server主要是对IP、端口和地址进行设置,其中地址默认配置/wd/hub即可;
  • 参数如下:
Remote Host:127.0.0.1
Remote Port:4723
Remote Path:/wd/hub # 注意如果报错,请把/wd/hub改为/

在这里插入图片描述

5.2 Select Cloud Providers

  • 点击Select Cloud Providers则会出现云服务商的选择界面;

在这里插入图片描述

  • 选择一个后会出现该服务商的标签:
    在这里插入图片描述
  • 这些云服务都是国外的,基本用不上,一般只连本地的server即可。

5.3 Advanced Settings

  • Advanced Settings为高级配置;
    在这里插入图片描述

  • 一般是设置代理的可不用,其中:

Allow Unauthorized Certificates:允许未经授权的证书
Use Proxy:使用代理服务器

5.4 Desired Capabilities配置

  • Desired Capabilities配置这个和之前使用脚本启动道理是一样的;
  • 一些配置参数如下:
capabilities = dict(
    platformName='Android',
    automationName='uiautomator2',
    deviceName='emulator-5554',
    appPackage='com.tencent.mobileqqi',
    appActivity='com.tencent.mobileqq.activity.SplashActivity',
    language='en',
    locale='US'
)
  • 直接在对应的输入框中输入以上内容即可:
    在这里插入图片描述

    5.5 Saved Capability Sets

  • 可以对已经配置好的进行保存操作:
    在这里插入图片描述
  • 保存后下次启动直接就可以用这个配置了:
    在这里插入图片描述

    5.6 Attach to Session

  • 如果Appium已经连接手机的session了,那么直接选择Session ID,加入就行了,不需要在进行配置了:
    在这里插入图片描述

    6 Start Session

  • 前边所有的配置做好好,直接点击界面中的Start Session,即可进入如下界面:
    在这里插入图片描述

    7 Inspector界面图标说明:

  • 界面上从做到右图标如下:
    在这里插入图片描述
  • 详细说明如下:
图标 名称 说明
1 Show Element Handles 是否显示元素句柄
2 Select Elements 选择元素定位
3 Tap/Swipe By Coordinates 按坐标点击/滑动
4 Download Screenshot 下载屏幕截图
5 Press Back Button 按下后退按钮
6 Press Home Button 按主页按钮
7 Press App Switch Button 按应用程序切换按钮
8 Native App Mode 本机应用程序模式
9 Web/Hybrid App Mode Web/混合应用程序模式
10 Refresh Source & Screenshot 刷新源和屏幕截图
11 Search for element 搜索元素
12 Start Recording 开始录制
13 Quit Session & Close Inspector 退出会话并关闭检查器

8 App Source

  • App Source是以XML格式显示界面上的控件布局;
  • 如图所示:
    在这里插入图片描述

9 Selected Element

  • Selected Element是对选择的元素进行详细的信息显示;

  • 比如我们选择的是用户名输入框,右边显示如下:

    在这里插入图片描述

  • 然后我们在右边的输入框中输入内容,点击发送后,可以直接将内容发送到应用程序的用户名输入框:
    在这里插入图片描述
    在这里插入图片描述

  • 右边这些属性包含了元素的accessibility idxpathelementIdpackageclass等信息,在后续我们写代码的时候,使用元素定位的时候可以用到这些属性信息。

    10 Session Information

  • Session Information是关于这个Session的详细信息,如下:
    在这里插入图片描述

  • 最下边显示了这个session的详细代码信息,你如java代码:
    在这里插入图片描述

// This sample code supports Appium Java client >=9
// https://github.com/appium/java-client
import io.appium.java_client.remote.options.BaseOptions;
import io.appium.java_client.android.AndroidDriver;
import java.net.URL;
import java.time.Duration;
import java.util.Arrays;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.*;

public class SampleTest {
   
   

  private AndroidDriver driver;

  @Before
  public void setUp() {
   
   
    var options = new BaseOptions()
      .amend("platformName", "Android")
      .amend("appium:automationName", "uiautomator2")
      .amend("appium:deviceName", "emulator-5554")
      .amend("appium:appPackage", "com.tencent.mobileqqi")
      .amend("appium:appActivity", "com.tencent.mobileqq.activity.SplashActivity")
      .amend("appium:language", "en")
      .amend("appium:locale", "US")
      .amend("appium:ensureWebviewsHavePages", true)
      .amend("appium:nativeWebScreenshot", true)
      .amend("appium:newCommandTimeout", 3600)
      .amend("appium:connectHardwareKeyboard", true);

    private URL getUrl() {
   
   
      try {
   
   
        return new URL("http://127.0.0.1:4723");
      } catch (MalformedURLException e) {
   
   
        e.printStackTrace();
      }
    }

    driver = new AndroidDriver(this.getUrl(), options);
  }

  @Test
  public void sampleTest() {
   
   

  }

  @After
  public void tearDown() {
   
   
    driver.quit();
  }
}
  • 比如python代码信息:
# This sample code supports Appium Python client >=2.3.0
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python

from appium import webdriver
from appium.options.common.base import AppiumOptions
from appium.webdriver.common.appiumby import AppiumBy

# For W3C actions
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver.common.actions.pointer_input import PointerInput

options = AppiumOptions()
options.load_capabilities({
   
   
    "platformName": "Android",
    "appium:automationName": "uiautomator2",
    "appium:deviceName": "emulator-5554",
    "appium:appPackage": "com.tencent.mobileqqi",
    "appium:appActivity": "com.tencent.mobileqq.activity.SplashActivity",
    "appium:language": "en",
    "appium:locale": "US",
    "appium:ensureWebviewsHavePages": True,
    "appium:nativeWebScreenshot": True,
    "appium:newCommandTimeout": 3600,
    "appium:connectHardwareKeyboard": True
})

driver = webdriver.Remote("http://127.0.0.1:4723", options=options)


driver.quit()
目录
相关文章
|
1月前
|
Java 测试技术 数据安全/隐私保护
软件测试中的自动化策略与工具应用
在软件开发的快速迭代中,自动化测试以其高效、稳定的特点成为了质量保证的重要手段。本文将深入探讨自动化测试的核心概念、常见工具的应用,以及如何设计有效的自动化测试策略,旨在为读者提供一套完整的自动化测试解决方案,帮助团队提升测试效率和软件质量。
|
1月前
|
Web App开发 IDE 测试技术
Selenium:强大的 Web 自动化测试工具
Selenium 是一款强大的 Web 自动化测试工具,包括 Selenium IDE、WebDriver 和 Grid 三大组件,支持多种编程语言和跨平台操作。它能有效提高测试效率,解决跨浏览器兼容性问题,进行性能测试和数据驱动测试,尽管存在学习曲线较陡、不稳定等缺点,但其优势明显,是自动化测试领域的首选工具。
211 17
Selenium:强大的 Web 自动化测试工具
|
2月前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
82 1
|
Web App开发 数据可视化 定位技术
分享十款堪称神器的工具APP
作为一个工具控,我推荐几个堪称神器的app,保证你喜欢。 01 思维导图—幕布 这是一个非常好用的写作神器,写文章非常便利。而且它还是一个思维导图工具,可以将文字一键生成思维导图,方便理清文章逻辑。 搭建好逻辑之后,直接往每一个小版块上添加内容就可以了。
1402 0
|
4天前
|
前端开发 Java 开发工具
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
【03】完整flutter的APP打包流程-以apk设置图标-包名-签名-APP名-打包流程为例—-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈 章节内容【03】
|
4天前
|
Dart 前端开发 Android开发
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
【02】写一个注册页面以及配置打包选项打包安卓apk测试—开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
|
6天前
|
Dart 前端开发 架构师
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
【01】vs-code如何配置flutter环境-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈-供大大的学习提升
|
3天前
|
小程序 IDE PHP
圈子源码如何打包生成App小程序/开发一个圈子系统软件所需要的费用体现在哪里?
将PHP源码打包成App的过程涉及多个步骤和技术选择。以圈子源码为例,首先明确需求,确定App功能和目标用户群体,并根据需求开发小程序页面,如用户注册、圈子列表等。源码准备阶段确保源码适用于小程序开发,环境配置需安装IDE(如微信开发者工具)及依赖库。最后在IDE中打包小程序并上传至管理平台,通过审核后发布。费用方面,模板开发成本较低,定制开发则更高,具体取决于需求复杂度和第三方服务费用。
27 0
|
21天前
|
开发框架 小程序 前端开发
圈子社交app前端+后端源码,uniapp社交兴趣圈子开发,框架php圈子小程序安装搭建
本文介绍了圈子社交APP的源码获取、分析与定制,PHP实现的圈子框架设计及代码编写,以及圈子小程序的安装搭建。涵盖环境配置、数据库设计、前后端开发与接口对接等内容,确保平台的安全性、性能和功能完整性。通过详细指导,帮助开发者快速搭建稳定可靠的圈子社交平台。
168 18
|
18天前
|
JSON 供应链 搜索推荐
淘宝APP分类API接口:开发、运用与收益全解析
淘宝APP作为国内领先的购物平台,拥有丰富的商品资源和庞大的用户群体。分类API接口是实现商品分类管理、查询及个性化推荐的关键工具。通过开发和使用该接口,商家可以构建分类树、进行商品查询与搜索、提供个性化推荐,从而提高销售额、增加商品曝光、提升用户体验并降低运营成本。此外,它还能帮助拓展业务范围,满足用户的多样化需求,推动电商业务的发展和创新。
44 5

热门文章

最新文章