Appium自动化(9) - appium元素定位的快速入门

简介: Appium自动化(9) - appium元素定位的快速入门

如果你还想从头学起Appium,可以看看这个系列的文章哦!

https://www.cnblogs.com/poloyy/category/1693896.html

 

快速入门栗子:boss直聘 app


环境要求:Android

image.png


栗子一:定位【自动化测试】

image.png


代码

test = driver.find_element_by_class_name("android.widget.TextView")
print(test.text)
test = driver.find_element_by_xpath("//*[@resource-id='com.hpbr.bosszhipin:id/title_container']/android.widget.FrameLayout/android.widget.TextView")
print(test.text)
test = driver.find_element_by_xpath("//*[contains(@text,'自动化测试')]")
print(test.text)


输出结果

自动化测试

自动化测试

自动化测试

 

栗子二:定位【附近】

image.png


代码

test = driver.find_element_by_id("com.hpbr.bosszhipin:id/tv_tab_label")
print(test.text)
test = driver.find_element_by_xpath("//*[@resource-id='com.hpbr.bosszhipin:id/tv_tab_label']")
print(test.text)
test = driver.find_element_by_xpath("//*[contains(@text,'附近')]")
print(test.text)


输出结果

推荐

推荐

附近


为啥会有两个推荐?

  • 很明显因为【推荐、附近】两个 tab 的 resource-id 都是一样的,而 find_element_by 只返回第一个匹配到的元素
  • 这个时候可以将代码改成 find_elements_by 匹配多个元素,再根据索引去匹配【附近】
test = driver.find_elements_by_id("com.hpbr.bosszhipin:id/tv_tab_label")[1]
print(test.text)
test = driver.find_elements_by_xpath("//*[@resource-id='com.hpbr.bosszhipin:id/tv_tab_label']")[1]
print(test.text)


输出结果

附近

附近

 

实战栗子:完整的流程

  1. 进入boss app
  2. 点击右上角的放大镜icon
  3. 点击输入框
  4. 输入“软件测试”
  5. 点击第一个结果
  6. 打印第一屏的地区、工作经验、学历


#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__  =
__Time__   = 2020-04-15 21:59
__Author__ = 小菠萝测试笔记
__Blog__   = https://www.cnblogs.com/poloyy/
"""
# 导包
from appium import webdriver
# 准备自动化配置信息
desired_caps = {
    # 移动设备平台
    'platformName': 'Android',
    # 平台OS版本号,写整数位即可
    'plathformVersion': '8',
    # 设备的名称--值可以随便写
    'deviceName': 'test0106',
    # 提供被测app的信息-包名,入口信息
    'appPackage': 'com.hpbr.bosszhipin',
    'appActivity': '.module.launcher.WelcomeActivity',
    # 如果被测应用没有安装到手机上,可以指定apk的在电脑上路径
    # 'app':r'D:\apk\xxx.apk',
    # 确保自动化之后不重置app
    'noReset': True,
    # 设置session的超时时间,单位秒
    'newCommandTimeout': 6000,
    # 如果不想每次都安装UI2驱动,可以这么设置
    'skipServerInstallation': True
}
# 初始化driver对象-用于控制手机
driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
driver.implicitly_wait(10)  # 稳定元素
# 点击放大镜
driver.find_element_by_xpath('//*[@resource-id="com.hpbr.bosszhipin:id/ly_menu"]/android.widget.RelativeLayout[2]/.').click()
# 搜索框输入职位信息
search_input = driver.find_element_by_id('com.hpbr.bosszhipin:id/et_search')
search_input.send_keys('软件测试')  # 输入参数
# 选择符合条件的第一个搜索结果
driver.find_element_by_id('com.hpbr.bosszhipin:id/tv_filtered_name').click()
# 获取当前页面所有职位信息元素
job_msg = driver.find_elements_by_id('com.hpbr.bosszhipin:id/view_job_card')
for job in job_msg:
    # 输出岗位名称
    name = job.find_element_by_id('com.hpbr.bosszhipin:id/tv_position_name')
    # print(name.text)
    # 输出薪资
    salray = job.find_element_by_id('com.hpbr.bosszhipin:id/tv_salary_statue')
    # print(salray.text)
    # 输出公司名称
    # 找到元素返回包含一个元素的列表,找不到就返回空列表
    company = job.find_elements_by_id('com.hpbr.bosszhipin:id/tv_company_name')
    # 避免屏幕遮挡了公司名,查到不到目标元素,设置一共默认值
    company_text = '空'
    # 当找打company元素的时候,就使用该元素的文本
    if company:
        company_text = company[0].text
    print('%s|%s|%s' % (name.text, salray.text, company_text))
# 点击第一个搜索结果
job_msg[0].click()
# 获取职位名称下面的信息:地区、工作年限、学历、工作性质
location = driver.find_element_by_id('tv_required_location').text
work_exp = driver.find_element_by_id('tv_required_work_exp').text
degree = driver.find_element_by_id('tv_required_degree').text
print(f'地区:{location}|工作经验:{work_exp}|学历:{degree}')
driver.quit()


输出结果

image.png

相关文章
|
3月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
208 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
4月前
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
3月前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
5月前
|
敏捷开发 Java 测试技术
探索自动化测试的奥秘:从Selenium到Appium
【9月更文挑战第14天】软件测试,这个看似枯燥乏味却至关重要的领域,正经历着一场革命。随着技术的进步,自动化测试工具如Selenium和Appium已成为质量保证的利器。本文将带你一探这些工具的神秘面纱,了解它们如何简化测试流程、提升效率,并确保软件产品的质量。准备好,我们将深入自动化测试的世界,解锁其背后的原理和实践技巧。
|
6月前
|
测试技术 Android开发 iOS开发
Appium 是一个开源的自动化测试框架,它支持多种平台和多种编程语言
Appium是一款开源自动化测试框架,支持iOS和Android多平台及多种编程语言。通过WebDriver协议,开发者可编写自动化测试脚本。在iPhone上实现屏幕点击等操作需安装Appium及其依赖,启动服务器,并设置所需的测试环境参数。利用Python等语言编写测试脚本,模拟用户交互行为,最后运行测试脚本来验证应用功能。对于iPhone测试,需准备真实设备或Xcode模拟器。
181 1
|
6月前
|
Java 测试技术 API
探索自动化测试的奥秘:从Selenium到Appium
【8月更文挑战第31天】本文旨在引导读者理解自动化测试的重要性,并逐步深入介绍如何利用Selenium和Appium这两个强大的工具来提升测试效率和质量。文章不仅分享理论知识,还通过具体代码示例,展示如何在Web应用和移动应用测试中实施自动化策略。
|
6月前
|
测试技术 Android开发 iOS开发
探索自动化测试的奥秘:从Selenium到Appium
【8月更文挑战第31天】在软件测试的海洋中,自动化测试如同一艘快艇,带领我们高效地穿越波涛汹涌的手动测试海域。本文将带你从Selenium的网页自动化测试出发,一路驶向Appium的移动应用自动化测试岛屿,揭秘这两种工具如何改变软件测试的航向。你将看到代码示例的灯塔,指引你理解它们如何在实战中发挥作用,以及为什么掌握这些技能对于测试人员来说至关重要。
|
6月前
|
Java 测试技术 Android开发
探索自动化测试之美:从Selenium到Appium
【8月更文挑战第31天】在软件开发的世界中,测试是确保产品质量的关键步骤。随着技术的发展,自动化测试工具如Selenium和Appium成为了开发者的得力助手。本文将通过一个简单的代码示例,带领读者了解如何利用这些工具进行高效的自动化测试,确保软件的稳定性和可靠性,同时也让测试过程变得更加轻松有趣。
|
8月前
|
测试技术
Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
Appium+python自动化(三十九)-Appium自动化测试框架综合实践 - 代码实现(超详解)
|
9月前
|
前端开发 JavaScript 测试技术
深入理解自动化测试框架:Selenium与Appium的比较
【5月更文挑战第29天】 在快速发展的软件行业中,自动化测试已成为保证软件质量和缩短发布周期的关键。本文深入分析了两个领先的自动化测试框架——Selenium和Appium,探讨了它们的核心原理、应用场景以及优缺点。通过细致的比较,为软件开发团队提供选择合适测试工具的参考依据,并强调了在不同环境下如何优化测试流程以提高测试效率和准确性。