Appium自动化测试输出日志到文件

测试代码:

嵌套捕获异常确保测试流程走完

使用WebDriverWait显示等待避免因界面未显示出来造成的异常

输出日志文件记录测试流程及异常捕获

# This sample code uses the Appium python client v2
# pip install Appium-Python-Client
# Then you can paste this into a file and simply run with Python
import logging
import time

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy
from appium.webdriver.common.mobileby import MobileBy

# For W3C actions
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.actions import interaction
from selenium.webdriver.common.actions.action_builder import ActionBuilder
from selenium.webdriver.common.actions.pointer_input import PointerInput
from selenium.webdriver.support.expected_conditions import visibility_of_element_located
from selenium.webdriver.support.wait import WebDriverWait

from Logger import Logger

caps = {}
caps["appium:platformName"] = "Android"
caps["appium:platformVersion"] = "9"
caps["appium:deviceName"] = "PAR-AL00"
caps["appium:appPackage"] = "com.test.Android"
caps["appium:appActivity"] = "com.test.Android.MainActivity"
caps["appium:unicodeKeyboard"] = True
caps["appium:resetKeyboard"] = True
caps["appium:noReset"] = True
caps["appium:newCommandTimeout"] = 6000
caps["appium:automationName"] = "UiAutomator2"
caps["appium:connectHardwareKeyboard"] = True
logger = Logger("appium", "appiumTest.log", CmdLevel=logging.DEBUG, FileLevel=logging.INFO)
try:
    driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", caps)
    wait = WebDriverWait(driver, 10, 1)
    # time.sleep(5)
    # el1 = driver.find_element(by=AppiumBy.XPATH,
    #                           value="/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[3]/android.widget.LinearLayout/android.view.View")
    el1_xpath = "/hierarchy/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.FrameLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[3]/android.widget.LinearLayout/android.view.View"
    wait.until(visibility_of_element_located((MobileBy.XPATH, el1_xpath)),message="el1_xpath not found")
    el1 = driver.find_element(by=AppiumBy.XPATH,value=el1_xpath)
    el1.click()
    logger.info(message="el1 click")
    # time.sleep(1)
    # el2 = driver.find_element(by=AppiumBy.XPATH,
    #                           value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/androidx.drawerlayout.widget.DrawerLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout[3]")
    el2_xpath = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/androidx.drawerlayout.widget.DrawerLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[2]/android.widget.LinearLayout/android.widget.FrameLayout[3]"
    wait.until(visibility_of_element_located((MobileBy.XPATH, el2_xpath)), message="el2_xpath not found")
    el2 = driver.find_element(by=AppiumBy.XPATH, value=el2_xpath)
    el2.click()
    logger.info(message="el2 click")
    # time.sleep(1)
    # el3 = driver.find_element(by=AppiumBy.XPATH,
    #                           value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/androidx.drawerlayout.widget.DrawerLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[3]/android.widget.LinearLayout/android.widget.FrameLayout[1]")
    el3_xpath = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/androidx.drawerlayout.widget.DrawerLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.RelativeLayout[3]/android.widget.LinearLayout/android.widget.FrameLayout[1]"
    wait.until(visibility_of_element_located((MobileBy.XPATH, el3_xpath)), message="el3_xpath not found")
    el3 = driver.find_element(by=AppiumBy.XPATH, value=el3_xpath)
    el3.click()
    logger.info(message="el3 click")
    time.sleep(2)
    actions = ActionChains(driver)
    actions.w3c_actions = ActionBuilder(driver, mouse=PointerInput(interaction.POINTER_TOUCH, "touch"))
    actions.w3c_actions.pointer_action.move_to_location(83, 183)
    actions.w3c_actions.pointer_action.pointer_down()
    actions.w3c_actions.pointer_action.pause(0.1)
    actions.w3c_actions.pointer_action.release()
    actions.perform()

    # time.sleep(2)
    # el4 = driver.find_element(by=AppiumBy.XPATH,
    #                           value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View[1]/android.view.View[2]/android.widget.ListView/android.view.View[2]/android.view.View[1]")
    el4_xpath = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View/android.view.View[1]/android.view.View[2]/android.widget.ListView/android.view.View[2]/android.view.View[1]"
    wait.until(visibility_of_element_located((MobileBy.XPATH, el4_xpath)), message="el4_xpath not found")
    el4 = driver.find_element(by=AppiumBy.XPATH, value=el4_xpath)
    el4.click()
    logger.info(message="el4 click")
    # time.sleep(2)
    # el5 = driver.find_element(by=AppiumBy.XPATH,
    #                           value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[4]/android.view.View[1]/android.view.View/android.widget.EditText")
    try:
        el5_xpath="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[4]/android.view.View[1]/android.view.View/android.widget.EditText"
        wait.until(visibility_of_element_located((MobileBy.XPATH, el5_xpath)), message="el5_xpath not found")
        el5 = driver.find_element(by=AppiumBy.XPATH, value=el5_xpath)
        el5.send_keys("18827637486")
        logger.info(message="el5 send_keys")
    except Exception as result:
        logger.warn(result)
        pass
    # el6 = driver.find_element(by=AppiumBy.XPATH,
    #                           value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[4]/android.view.View[2]/android.view.View[1]/android.widget.EditText")
    try:
        el6_xpath = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[4]/android.view.View[2]/android.view.View[1]/android.widget.EditText"
        wait.until(visibility_of_element_located((MobileBy.XPATH, el6_xpath)), message="el6_xpath not found")
        el6 = driver.find_element(by=AppiumBy.XPATH, value=el6_xpath)
        el6.send_keys("chenke1013")
        logger.info(message="el6 send_keys")
    except Exception as result:
        logger.warn(result)
        pass
    # el7 = driver.find_element(by=AppiumBy.XPATH,
    #                           value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[4]/android.view.View[5]/android.view.View/android.view.View[1]")
    try:
        el7_xpath = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[4]/android.view.View[5]/android.view.View/android.view.View[1]"
        wait.until(visibility_of_element_located((MobileBy.XPATH, el7_xpath)), message="el7_xpath not found")
        el7 = driver.find_element(by=AppiumBy.XPATH, value=el7_xpath)
        el7.click()
        logger.info(message="el7 click")
    except Exception as result:
        logger.warn(result)
        pass
    # el8 = driver.find_element(by=AppiumBy.XPATH,
    #                           value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[4]/android.view.View[4]")
    try:
        el8_xpath = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.webkit.WebView/android.webkit.WebView/android.view.View/android.view.View[4]/android.view.View[4]"
        wait.until(visibility_of_element_located((MobileBy.XPATH, el8_xpath)), message="el8_xpath not found")
        el8 = driver.find_element(by=AppiumBy.XPATH, value=el8_xpath)
        el8.click()
        logger.info(message="el8 click")
    except Exception as result:
        logger.warn(result)
        pass
    # time.sleep(3)
    # el9 = driver.find_element(by=AppiumBy.XPATH,
    #                           value="/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout[1]/android.widget.ImageView")
    try:
        el9_xpath = "/hierarchy/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.FrameLayout/android.widget.LinearLayout/android.widget.RelativeLayout/android.widget.LinearLayout[1]/android.widget.ImageView"
        wait.until(visibility_of_element_located((MobileBy.XPATH, el9_xpath)), message="el9_xpath not found")
        el9 = driver.find_element(by=AppiumBy.XPATH, value=el9_xpath)
        el9.click()
        logger.info(message="el9 click")
    except Exception as result:
        logger.warn(result)
except Exception as result:
    logger.warn(result)

driver.quit()

日志封装类:

# 日志综合案例的封装
import logging

class Logger():
    def __init__(self, LoggerName, FileName, CmdLevel, FileLevel):
        # LoggerName:实例化对象的名字  FileName:外部文件名   CmdLevel:设置控制台中日志输出的级别  FileLevel:设置文件日志输出的级别
        self.logger = logging.getLogger(LoggerName)
        # 设置日志的级别
        self.logger.setLevel(logging.DEBUG)
        # 设置日志的输出格式
        fmt = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s')

        # 借助handle将日志输出到test.log文件中
        fh = logging.FileHandler(FileName)
        fh.setLevel(FileLevel)

        # 借助handle将日志输出到控制台
        ch = logging.StreamHandler()
        ch.setLevel(CmdLevel)

        # 配置logger
        fh.setFormatter(fmt)
        ch.setFormatter(fmt)

        # 给logger添加handle
        self.logger.addHandler(fh)
        self.logger.addHandler(ch)

    def debug(self,message):
        self.logger.debug(message)

    def info(self,message):
        self.logger.info(message)

    def warn(self,message):
        self.logger.warning(message)

    def error(self,message):
        self.logger.error(message)

    def critical(self,message):
        self.logger.critical(message)

控制台输出:

 日志输出:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

汤面不加鱼丸

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

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

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

打赏作者

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

抵扣说明:

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

余额充值