• 0
  • 0
分享
  • Appium综合实践(2)--公共模块Common的封装
  • 豆秸 2022-07-11 09:03:31 字数 2358 阅读 1213 收藏 0

公共类的思维导图如下:

投21.png

common_fun.py用于封装公共模块,例如滑动引导页的模块、检测应用是否进入首页等

1.进入应用首页

通过判断首页的某个元素存在,来校验是否成功进入应用首页

投22.png

2.定义获取屏幕大小函数

投23.png

3.定义向左滑动的函数

投24.png

4.定义获取系统时间的函数

投25.png

5.定义屏幕截图函数

投26.png

说明:

1.获取当前脚本所在的文件夹:t_path=os.path.dirname(__file__)

2.获取当前脚本所在文件夹的上一个文件夹:os.path.dirname(os.path.dirname(__file__))

3.进入同一目录下的另外一个文件夹:

    os.path.dirname(os.path.dirname(__file__))+'/screenshots/%s_%s.png' %(module,time),其中%s_%s.png %(modele,time)表示以传入的模块和当前系统时间命名截图文件

完整的脚本:common_fun.py

前提:已有yaml、log.conf、desired_caps.py、baseView.py文件;common_fun.py继承baseView.py

#!urs/bin/python
#!_*_ coding:UTF-8 _*_
from baseView.baseView import BaseView
from common.desired_caps import appium_desired
from selenium.common.exceptions import NoSuchElementException
import logging
from selenium.webdriver.common.by import By
import time,os
#定义类
class Common(BaseView):
    image_button = (By.ID, "com.mydream.wifi:id/tvAsk")
    #定义判断已进入应用首页的函数
    def check_imagebutton(self):
 
        logging.info("========检测元素========")
        try:
            element=self.driver.find_elements(*self.image_button)
        except NoSuchElementException:
            logging.info("========元素不存在========")
        else:
           # element.click()
            logging.info("========元素存在========")
   #定义获取屏幕的方法
    def get_windows_size(self):
        logging.info("========获取屏幕大小========")
        x = self.driver.get_window_size()['height']  # 获取屏幕的高度
        y = self.driver.get_window_size()['width']  # 获取屏幕的宽度
        return (x, y)
    #定义向左滑动的方法
    def swipleft(self):
        logging.info("========滑动引导页========")
        gs = self.get_windows_size()
        x1 = int(gs[0] * 0.75)
        y1 = int(gs[1] * 0.5)
        x2 = int(gs[0] * 0.25)
        self.driver.swipe(x1, y1, x2, y1, 1000)
    #返回以可读字符串表示的当地时间,并设置好返回的格式
    def getTime(self):
        self.now = time.strftime("%Y-%m-%d %H_%M_%S")
        return self.now
    #定义屏幕截图的方法
    def getScreenShot(self,module):
        time=self.getTime()
        t_path=os.path.dirname(__file__)
        image_file=os.path.dirname(os.path.dirname(__file__))+'/screenshots/%s_%s.png' %(module,time)
        logging.info('get %s screenshot' %module)
        self.driver.get_screenshot_as_file(image_file)
        logging.info("=======首页截图成功=======")
if __name__ == '__main__':
    #定义driver初始化
    driver=appium_desired()
    com=Common(driver)
    com.check_imagebutton()
    #com.swipleft()
    #调用截图,传入具体的模块名称
    com.getScreenShot("star APP")

运行后的日志如下:

投27.png


  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 扫码功能测试点网上没搜到,自己写了几点,欢迎补充,我写不全面用微信/qq/支付宝/淘宝/京东等渠道扫一扫进行测试;扫码进入页面显示是否正确,跳转链接是否正确;保存扫码图片,长按图片识别进入(微信);扫码时二维码不完全对准;扫残缺的二维码;扫模糊的二维码;扫缩小的二维码;联网扫码;不联网扫码;弱网扫码二维码有效期验证失效二维码是否可以扫二维码生成多个扫描后是否正常显示修改与二维码相关的内容/跳转网址后,不重新生成二维码,扫码进入看信息是否更新扫码跳转过程中断测试(扫码时来电/来信息/邮件等)扫码后切换应用程序,看是否会闪退,黑屏,跳转回去是否会跳到相应的链接付款码功能1:正常的发起一笔资金支付请...
            0 0 4890
            分享
          • 记得去年这个时候,组内浩浩荡荡地做制度更新,做质量提升,还要求每个组输出落地的措施,基本上是顶着市场的压力给出承诺,并且控制市场投诉的比率和数量肉眼可见的下降。虽然辛苦,但也值得。自研和外包测试有一个很大的区别,外包的工作只需要把事情按时做完就行,但是自研的工作会让你想方设法做提升,做优化,按照优化的成果做绩效评估。所以在不同环境就做好相应的处理吧。下面就简单举个例子:一、当前的问题(线上问题分析及以往版本复盘):版本转测的时候没有整体概念,经常是后端管后端的,前端管前端的转测邮件形同虚设,没有转测意见,也没有附上自测结果修改的问题很容易影响以往老功能:参考礼品卡bug频繁,没有进行深入分析,...
            3 3 6630
            分享
          •   汤姆猫在投资者关系活动中对是否受网游新规影响进行了回应,表示汤姆猫系列产品 80% 以上活跃用户来自于海外市场,国内用户占比较低。  汤姆猫家族 IP 系列游戏以广告收入为主,而非内购充值,2023 年上半年公司实现广告收入 51916.77 万元,占营业收入比重为 75.43%。  除国内外团队在研的《Talking Ben AI》(暂定名)、多模态 AI 汤姆猫、汤姆猫 AI 讲故事等 AI 交互产品之外,还储备了《汤姆猫图画册》《金杰猫的游乐场》《汤姆猫闯乐园》《我的汉克狗:海岛》《Sonic Dash:Endless Running》《Sonic Dash 2:SonicBoom》...
            0 0 488
            分享
          • 使用说明:http://quan.51testing.com/pcQuan/lecture/97开源项目地址: https://gitee.com/samllpig/SafeTool-51testing (谢谢大家点亮star)安全测试工具架构:安全测试工具v1.2版本更新内容:请求拦截功能,支持多个请求拦截   2. 响应拦截功能动图比较大,可以再git上看说明文档 https://gitee.com/samllpig/SafeTool-51testing
            3 3 3123
            分享
      • 51testing软件测试圈微信