『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()
目录
相关文章
|
14天前
|
敏捷开发 测试技术 持续交付
探索自动化测试在敏捷开发中的应用与挑战
本文深入探讨了自动化测试在现代软件开发流程,特别是敏捷开发环境中的重要作用和面临的挑战。通过分析自动化测试的基本原理、实施策略以及在实际项目中的应用案例,揭示了其在提高软件质量和加速产品交付方面的巨大潜力。同时,文章也指出了自动化测试实施过程中可能遇到的技术难题、成本考量及团队协作问题,并提出了相应的解决策略,为软件开发团队提供了有价值的参考和指导。
|
4天前
|
运维 应用服务中间件 Linux
自动化运维的利器:Ansible在配置管理中的应用
【10月更文挑战第39天】本文旨在通过深入浅出的方式,向读者展示如何利用Ansible这一强大的自动化工具来优化日常的运维工作。我们将从基础概念讲起,逐步深入到实战操作,不仅涵盖Ansible的核心功能,还会分享一些高级技巧和最佳实践。无论你是初学者还是有经验的运维人员,这篇文章都会为你提供有价值的信息,帮助你提升工作效率。
|
10天前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
44 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
7天前
|
机器学习/深度学习 传感器 算法
智能机器人在工业自动化中的应用与前景###
本文探讨了智能机器人在工业自动化领域的最新应用,包括其在制造业中的集成、操作灵活性和成本效益等方面的优势。通过分析当前技术趋势和案例研究,预测了智能机器人未来的发展方向及其对工业生产模式的潜在影响。 ###
37 9
|
7天前
|
运维 Ubuntu 应用服务中间件
自动化运维工具Ansible的实战应用
【10月更文挑战第36天】在现代IT基础设施管理中,自动化运维已成为提升效率、减少人为错误的关键手段。本文通过介绍Ansible这一流行的自动化工具,旨在揭示其在简化日常运维任务中的实际应用价值。文章将围绕Ansible的核心概念、安装配置以及具体使用案例展开,帮助读者构建起自动化运维的初步认识,并激发对更深入内容的学习兴趣。
27 4
|
5天前
|
运维 安全 应用服务中间件
自动化运维的利剑:Ansible在配置管理中的应用
【10月更文挑战第37天】本文将深入探讨如何利用Ansible简化和自动化复杂的IT基础设施管理任务。我们将通过实际案例,展示如何用Ansible编写可重用的配置代码,以及这些代码如何帮助运维团队提高效率和减少人为错误。文章还将讨论如何构建Ansible playbook来自动部署应用、管理系统更新和执行常规维护任务。准备好深入了解这个强大的工具,让你的运维工作更加轻松吧!
21 2
|
14天前
|
机器学习/深度学习 数据采集 运维
智能化运维:机器学习在故障预测和自动化响应中的应用
智能化运维:机器学习在故障预测和自动化响应中的应用
40 4
|
15天前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
32 2
|
14天前
|
NoSQL 测试技术 Go
自动化测试在 Go 开源库中的应用与实践
本文介绍了 Go 语言的自动化测试及其在 `go mongox` 库中的实践。Go 语言通过 `testing` 库和 `go test` 命令提供了简洁高效的测试框架,支持单元测试、集成测试和基准测试。`go mongox` 库通过单元测试和集成测试确保与 MongoDB 交互的正确性和稳定性,使用 Docker Compose 快速搭建测试环境。文章还探讨了表驱动测试、覆盖率检查和 Mock 工具的使用,强调了自动化测试在开源库中的重要性。
|
6月前
|
测试技术 API Python
Appium控件交互策略:优化自动化测试效率的关键方法
该文介绍了如何使用Selenium与APP进行交互,包括点击、输入和状态判断等操作。例如,通过element.click()点击控件,element.send_keys()输入文本,以及element.is_displayed()检查元素是否可见。还展示了如何获取元素属性,如resource-id、text和class,并提供了Python代码示例来定位并操作APP元素,如滑动条的显示、可点击性检测及点击滑动条中心位置。在编写测试脚本时,应注意元素定位和状态验证以确保测试稳定性。