zoukankan      html  css  js  c++  java
  • Appium自动化(9)

    如果你还想从头学起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:apkxxx.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()

    输出结果

  • 相关阅读:
    CFree 提示main must return int
    策略模式
    CFree 提示no newline at the end of file
    EEPROM的写入操作解析
    一些关于mic的知识
    一些关于电池的资料
    太阳能电池板日发电量简易计算方法
    ubuntu 下载编译android源代码
    SC44B0的内存地址解析
    RequireJS 2.0 学习笔记一
  • 原文地址:https://www.cnblogs.com/poloyy/p/12922423.html
Copyright © 2011-2022 走看看