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//*[contains(@text,'自动化测试')]print(test.text)

输出结果

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

 

栗子二:定位【附近】

代码

test = driver.find_element_by_id(com.hpbr.bosszhipin:id/tv_tab_label//*[@resource-id='com.hpbr.bosszhipin:id/tv_tab_label']推荐
推荐
附近

为啥会有两个推荐?

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

test = driver.find_elements_by_xpath(附近
附近

 

实战栗子:完整的流程

  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版本号,写整数位即可
    plathformVersion8 设备的名称--值可以随便写
    deviceNametest0106 提供被测app的信息-包名,入口信息
    appPackagecom.hpbr.bosszhipinappActivity.module.launcher.WelcomeActivity 如果被测应用没有安装到手机上,可以指定apk的在电脑上路径
     'app':r'D:\apk\xxx.apk',
     确保自动化之后不重置app
    noReset: True,1)"> 设置session的超时时间,单位秒
    newCommandTimeout': 6000 如果不想每次都安装UI2驱动,可以这么设置
    skipServerInstallation: True
}

 初始化driver对象-用于控制手机
driver = webdriver.Remote(http://localhost:4723/wd/hub 稳定元素

 点击放大镜
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 获取当前页面所有职位信息元素
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()

输出结果

 

相关文章

前言:appium可以说是app最火的一个自动化框架,它的主要优势...
(原文:https://www.cnblogs.com/fancy0158/p/10047906.htm...
一Appium介绍1.1含义开源,跨平台,多语言支持的移动应用自动...
前言:Appium是一个自动化测试开源工具,支持iOS平台和Andro...
转:https://blog.csdn.net/Tigerdong1/article/details/801...
(原文:https://www.cnblogs.com/fancy0158/p/10056418.htm...