APP UI自动化练习

一、发现页面

1. 导入类

from appium import webdriver
from Uiframe0test.public.faxian import FaXian
import unittest
import time
import os

2. SetUp

class AndroidTests(unittest.TestCase):
    def setUp(self):
        desired_caps = {}  # 定义了一个字典,下面是字典里面的值
        desired_caps['platformName'] = 'android'  # 平台名称,如果是苹果,则写ios(小写)
        desired_caps['platformVersion'] = '8.0'  # 手机系统版本号,与测试手机版本一致
        desired_caps['deviceName'] = 'Android Emulator'  # 设备名,appium不强制检查此参数值,只要有值即可
        desired_caps['noReset'] = 'True'  # 退出APP时,不重置APP的数据
        desired_caps['appPackage'] = 'cn.xiaochuankeji.tieba'  # 包名,每个APP就是通过包名来唯一区分
        desired_caps['appActivity'] = '.ui.base.SplashActivity'  # 首个界面的activity
        desired_caps['unicodeKeyboard'] = 'True'  # 给手机安装一个appium的输入法
        desired_caps['resetKeyboard'] = 'True'  # 重置键盘,使appium输入法为默认输入法
        #desired_caps['fullReset'] = 'True'   #在初始化时添加这个参数后,每次跑完之后就会把APP卸载掉
        #desired_caps['app'] = 'D:\BaiduNetdiskDownload\zuiyou518.apk'  #每次开始时会先安装APP
        desired_caps['automationName'] = 'Uiautomator2'

        self.driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)  # 初始化driver
        print("starttime:" + time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time())))

3. tearDown

   def tearDown(self):
        filedir = 'D:/test/screenshot/'
        TIME = time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))
        if not os.path.exists(filedir):
            os.makedirs(os.path.join('D:/', 'test', 'screenshot'))
        print('endTime:' + TIME)
        screen_name = filedir + TIME + '.png'
        self.driver.get_screenshot_as_file(screen_name)
        self.driver.quit()

4. 用例1-验证发现页面跳转功能

def testfaxian02_01(self):
    '''验证发现页面跳转功能'''
    self.driver.implicitly_wait(60)
    ele1 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='发现']")  # 发现
    ele1.click()  #点击发现
    self.driver.implicitly_wait(10)
    ele2 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='扩列']")
    self.assertEqual("扩列",ele2.text)

5. 用例2-进入发现-右友页面

def testfaxian02_02(self):
    '''进入发现-右友页面'''
    FaXian(self.driver).faxian()
    self.driver.implicitly_wait(10)
    yy = self.driver.find_element_by_xpath("//android.widget.ImageView[@resource-id='cn.xiaochuankeji.tieba:id/ivWeb_cover']")
    yy.click()  #进入右友页面
    self.driver.implicitly_wait(10)
    ele1= self.driver.find_element_by_xpath("//android.widget.TextView[@text='好友']")
    ele2 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='推荐']")
    ele3 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='最新']")
    self.assertEqual("好友", ele1.text)
    self.assertEqual("推荐", ele2.text)
    self.assertEqual("最新", ele3.text)

6. 用例3-在右友里面选择帖子并点赞

def testfaxian02_03(self):
    '''在右友里面选择帖子并点赞'''
    FaXian(self.driver).faxian()
    self.driver.implicitly_wait(10)
    self.driver.find_element_by_xpath("//android.widget.ImageView[@resource-id='cn.xiaochuankeji.tieba:id/ivWeb_cover']").click()  # 进入右友页面
    self.driver.implicitly_wait(10)
    aa = self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/like_num")  #记录初始点赞数
    bb= aa.text
    self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/like_icon").click()   #点赞
    cc = aa.text  #点赞后点赞数
    self.assertEqual(int(bb)+1,int(cc))  #点赞后数目加1

二、首页

1. 导入类

from appium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import unittest
import time
import os

2. 用例1-验证首页导航栏文案显示是否正常

def testshouye01_01(self):
    '''验证首页导航栏文案显示是否正常'''
    self.driver.implicitly_wait(60)
    ele1 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='关注']")  # 关注
    ele2 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='话题']")  # 话题
    ele3 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='推荐']")  # 推荐
    ele4 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='视频']")  # 视频
    ele5 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='图文']")  # 图文
    ele6 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='生活']")  # 生活
    self.assertEqual("关注", ele1.text)
    self.assertEqual("话题", ele2.text)
    self.assertEqual("推荐", ele3.text)
    self.assertEqual("视频", ele4.text)
    self.assertEqual("图文", ele5.text)
    self.assertEqual("生活", ele6.text)
    time.sleep(5)
    self.driver.swipe(900,150,400,150,3000)  #将生活左滑到推荐,生活:[801,116][924,173]  推荐:[342,109][465,180]
    time.sleep(10)
    ele7 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='语玩']")  # 语玩
    ele8 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='游戏']")  # 游戏
    ele9 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='三坑']")  # 三坑
    self.assertEqual("语玩", ele7.text)
    self.assertEqual("游戏", ele8.text)
    self.assertEqual("三坑", ele9.text)

3. 用例2-验证首页功能模块文案显示是否正常

def testshouye01_02(self):
    '''验证首页功能模块文案显示是否正常'''
    self.driver.implicitly_wait(60)
    ele1 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='最右']")  # 最右
    ele2 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='发现']")  # 发现
    ele3 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='消息']")  # 消息
    ele4 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='我的']")  # 我的
    self.assertEqual("最右", ele1.text)
    self.assertEqual("发现", ele2.text)
    self.assertEqual("消息", ele3.text)
    self.assertEqual("我的", ele4.text)

4. 用例3-验证发布帖子功能

  def testshouye01_03(self):
        '''验证发布帖子功能'''
        self.driver.implicitly_wait(60)
        ele1 = self.driver.find_elements_by_id("cn.xiaochuankeji.tieba:id/iconTabItem")[2]  #新建帖子入口
        ele1.click()  # 点击
        self.driver.implicitly_wait(10)
        ele2 = self.driver.find_element_by_xpath("//android.widget.EditText[@text='我的快乐源泉']")  # 输入框
        text = "我的快乐源泉最右APP" + time.strftime('%Y-%m-%d-%H-%M-%S', time.localtime(time.time()))
        ele2.send_keys(text)  # 输入内容
        self.driver.find_elements_by_id("cn.xiaochuankeji.tieba:id/tvTopicName")[0].click()  #选择推荐的第一个话题
        self.driver.find_element_by_xpath("//android.widget.TextView[@text='发布']").click()  # 点击发布

        #断言
        sendContent = self.driver.find_elements_by_id("cn.xiaochuankeji.tieba:id/expand_content_view")
        List = []  #定义列表
        for i in range(0,len(sendContent)):
            List.append(sendContent[i].text)  #将控件上的文本信息全部追加到列表中
        List = "".join(List)  #将列表转换成字符串
        self.assertIn(text,List)  #如果发帖内容在列表中,说明发帖成功

5. 用例4-验证关注功能

def testshouye01_04(self):
    '''验证关注功能'''
    time.sleep(10)
    while True:
        try:
            self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/v_epaulet_follow").click()
            break
        except:
            height = self.driver.get_window_size()['height']
            width = self.driver.get_window_size()['width']
            self.driver.swipe(width * 0.5, height * 0.8, width * 0.5, height * 0.2, 1000)  # 当关注没有显示时,上滑
    #断言
    toast = ("xpath", '//*[contains(@text,"关注成功")]')
    # 最大等待时间10秒,每隔0.1秒检测1次,直到当前界面存在了关注成功提示
    ele = WebDriverWait(self.driver, 10, 0.1).until(EC.presence_of_element_located(toast))
    self.assertEqual("关注成功",ele.text)

6. 用例5-验证页面刷新功能

   def testshouye01_05(self):
        '''验证页面刷新功能'''
        self.driver.implicitly_wait(60)
        name = self.driver.find_elements_by_id("cn.xiaochuankeji.tieba:id/simple_member_tv_name")[0]
        aa = name.text  #第一条帖子的用户名称
        self.driver.implicitly_wait(10)
        self.driver.find_element_by_xpath("//android.widget.ImageView\
            [@resource-id='cn.xiaochuankeji.tieba:id/home_refresh_view']").click()  # 刷新当前界面
        self.driver.implicitly_wait(10)
        #断言
        bb = self.driver.find_elements_by_id("cn.xiaochuankeji.tieba:id/simple_member_tv_name")[0]
        self.assertNotEqual(aa,bb.text)

7. 用例6-验证帖子屏蔽功能

   def testshouye01_06(self):
        '''验证帖子屏蔽功能'''
        self.driver.implicitly_wait(60)
        ele1 = self.driver.find_element_by_xpath("//android.widget.ImageView\
            [@resource-id='cn.xiaochuankeji.tieba:id/simple_decorator_delete']")
        ele1.click()  # 屏蔽用户
        self.driver.find_element_by_xpath("//android.widget.TextView[@text='不喜欢该用户']").click()  # 选择屏蔽原因
        toast = ("xpath", '//*[contains(@text,"将减少类似内容推荐")]')
        # 最大等待时间20秒,每隔0.1秒检测1次,直到当前界面存在了关注成功提示
        ele2 = WebDriverWait(self.driver, 10, 0.1).until(EC.presence_of_element_located(toast))
        self.assertEqual("将减少类似内容推荐", ele2.text)

8. 用例7-验证搜索功能

def testshouye01_07(self):
    '''验证搜索功能'''
    self.driver.implicitly_wait(60)
    ele = self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/ic_search_b") .click()  # 点击首页-搜索
    self.driver.implicitly_wait(10)
    search = self.driver.find_element_by_class_name("android.widget.EditText")  # 搜索-输入框
    search.send_keys('圣诞节')
    time.sleep(5)
    self.driver.keyevent(84)  # 搜索
    aa= self.driver.find_element_by_xpath("//android.widget.EditText[@resource-id='cn.xiaochuankeji.tieba:id/container_search_input']")
    bb = aa.text  #获取搜索框中的内容
    title = self.driver.find_elements_by_id("cn.xiaochuankeji.tieba:id/title")  #搜索内容title列表
    List = []
    for i in range(0,len(title)):
        List.append(title[i].text)
    List = "".join(List)
    self.assertIn("圣诞节",List)

三、消息页面

1. 导入类

from appium import webdriver
from Uiframe0test.public.xiaoxi import XiaoXi
import unittest
import time
import os

2. 用例1-验证消息页面跳转功能

def testxiaoxi03_01(self):
    '''验证消息页面跳转功能'''
    self.driver.implicitly_wait(60)
    ele = self.driver.find_element_by_xpath("//android.widget.TextView[@text='消息']")  # 消息
    ele.click()
    self.driver.implicitly_wait(10)
    ele1 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='提醒']")  # 提醒
    ele2 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='私信']")  # 私信
    self.assertEqual("提醒", ele1.text)
    self.assertEqual("私信", ele2.text)

3. 用例2-私信列表底部显示

 def testxiaoxi03_02(self):
        '''私信列表底部显示'''
        XiaoXi(self.driver).xiaoxi()
        self.driver.implicitly_wait(10)
        self.driver.find_element_by_xpath("//android.widget.TextView[@text='私信']").click()  # 点击私信
        while True:
            try:
                ele = self.driver.find_element_by_xpath("//android.widget.TextView[@text='没有更多啦~']")
                self.assertEqual("没有更多啦~", ele.text)
                break
            except:
                height = self.driver.get_window_size()['height']
                width = self.driver.get_window_size()['width']
                self.driver.swipe(width * 0.5, height * 0.8, width * 0.5, height * 0.2, 1000)  # 上滑

4. 用例3-删除一条私信功能

   def testxiaoxi03_03(self):
        '''删除一条私信功能'''
        XiaoXi(self.driver).xiaoxi()
        self.driver.implicitly_wait(10)
        self.driver.find_element_by_xpath("//android.widget.TextView[@text='私信']").click()  # 点击私信
        name1 = self.driver.find_elements_by_id("cn.xiaochuankeji.tieba:id/name")
        aa = name1[0].text  #删除前第一条私信用户名
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/ivBtn_delete_batch").click()  #点击删除按钮
        self.driver.implicitly_wait(10)
        self.driver.find_elements_by_id("cn.xiaochuankeji.tieba:id/ivBtn_select")[0].click()  # 选择第一条私信
        self.driver.implicitly_wait(10)
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/vBtn_delete").click()  #点击删除
        self.driver.implicitly_wait(10)
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/ZYDialog_positive_btn").click()  #点击确认
        self.driver.implicitly_wait(10)
        name2 = self.driver.find_elements_by_id("cn.xiaochuankeji.tieba:id/name")
        bb = name2[0].text  #删除后第一条私信用户名
        self.assertNotEqual(aa,bb)

5. 用例4-消息-提醒页面显示

def testxiaoxi03_04(self):
    '''消息-提醒页面显示'''
    XiaoXi(self.driver).xiaoxi()
    self.driver.find_element_by_xpath("//android.widget.TextView[@text='提醒']").click()
    self.driver.implicitly_wait(10)
    ele1 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='小右通知']")
    ele2 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='收到的@']")
    ele3 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='新增粉丝']")
    ele4 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='好友请求']")
    self.assertEqual("小右通知",ele1.text)
    self.assertEqual("收到的@", ele2.text)
    self.assertEqual("新增粉丝", ele3.text)
    self.assertEqual("好友请求", ele4.text)

6. 用例5-消息-提醒页面显示

def testxiaoxi03_05(self):
    '''消息-提醒页面为空时界面显示'''
    XiaoXi(self.driver).xiaoxi()
    self.driver.find_element_by_xpath("//android.widget.TextView[@text='提醒']").click()
    self.driver.implicitly_wait(10)
    ele = self.driver.find_element_by_xpath("//android.widget.TextView[@text='网络一线牵,主动才有缘~']")
    self.assertEqual("网络一线牵,主动才有缘~", ele.text)

四、public

1.faxian.py

class FaXian(object):
    def __init__(self, driver):
        self.driver = driver

    def faxian(self):
        self.driver.implicitly_wait(60)
        ele1 = self.driver.find_element_by_xpath("//android.widget.TextView[@text='发现']")  # 发现
        ele1.click()  # 点击发现

2. log_create.py

import time
class createlog(object):
    def __init__(self, driver):  #封装了一个init方法
        self.driver = driver  #将driver赋值给self.driver

    def log(self):
        time.sleep(3)
        self.driver.find_element_by_xpath("//div[@class='container']/ul/a[5]/li").click()  # 点击日志
        time.sleep(3)
        self.driver.find_element_by_xpath("//main[@class='el-main']/div/div/button/span").click()  # 写日志
        time.sleep(3)

3. loginApp.py

import time

class Mylogin(object):
    def __init__(self, driver):
        self.driver = driver

    def login(self):
        self.driver.implicitly_wait(60)
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/me_item").click()
        time.sleep(2)
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/tv_notLogin_goLogin").click()
        time.sleep(1)
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/login_mode").click()
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/phone_num_edit").send_keys("15127409611")
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/code_edit").send_keys("a123456")
        self.driver.find_element_by_id("cn.xiaochuankeji.tieba:id/login").click()
        time.sleep(5)

4. xiaoxi.py

import time

class XiaoXi(object):
    def __init__(self, driver):
        self.driver = driver

    def xiaoxi(self):
        self.driver.implicitly_wait(60)
        self.driver.find_element_by_xpath("//android.widget.TextView[@text='消息']").click()  # 消息
        time.sleep(5)
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晓晓白的软件测试进阶之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值