专栏首页自动化、性能测试Appium自动化(9) - appium元素定位的快速入门

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

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

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

快速入门栗子:boss直聘 app

环境要求:Android

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

代码

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)

输出结果

自动化测试
自动化测试
自动化测试

栗子二:定位【附近】

代码

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()

输出结果

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Selenium系列(十九) - Web UI 自动化基础实战(6)

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

    小菠萝测试笔记
  • Selenium系列(十四) - Web UI 自动化基础实战(1)

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

    小菠萝测试笔记
  • Selenium系列(十八) - Web UI 自动化基础实战(5)

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

    小菠萝测试笔记
  • python爬虫-京东商品爬取

    小小咸鱼YwY
  • 船长带你看书——《selenium2 python 自动化测试实战》(1)

    用户2149234
  • 知否知否-----selenium知多少

    关于selenium,就不多介绍什么了,主要就是用来进行自动化的工具。怎样进行自动化,这才是它大放异彩的地方。下面就来看看吧!

    我被狗咬了
  • 接口结构+一个selenium例子

    用户2149234
  • 《selenium2 python 自动化测试实战》(7)——定位一组对象

    用户2149234
  • Python 3.7 + Selenium UI 自动化测试简单实例

    本篇主要应用Django搭建学生管理平台,使用Python + Selenium 模拟用户注册登录场景简单实例。Django实战部分往后可能和大家见面,目前还在...

    muntainyang
  • python---定位元素

    (1)id定位 :id属性在html文档中是唯一的 find_element_by_id()方法通过id属性定位元素 (2)name定位 find_elemen...

    py3study

扫码关注云+社区

领取腾讯云代金券