Appium Python 自动化测试一

前言

  • 前两天在上班的时候微信突然收到一个陌生的好友申请,我怀着万分好奇的心情同意添加好友的申请后发现是一个咨询问题的悻悻学子,怀揣着对自动化的向往,让我不禁回想起多年前到处寻找答案的自己
  • 一直都是在各个社区里寻找答案,是时候为社区做一些反馈。 就这样写一篇完整的 Appium 教程的想法就在我心里萌生。
  • 文章内容如果有错误请及时联系

如何启动一个Appium server

  • 启动一个appium server
    启动命令: appium -a 127.0.0.1 -p 4723 -bp 4724 -U SJE5T17619002517 --session-override -g appium.log
    参数说明:
    1、-a: 指定监听的ip 如: 127.0.0.1
    2、-p: 指定监听的端口 默认4723 也可修改
    3、-b: bootstartport 指定appium和测试设备的通信端口
    4、-U: 手机设备 Android使用: adb devices 查看 iOS bundleID 使用: idevice_id -l
    5、-g 指定appium log的日志路径
    6、--session-override 允许会话覆盖(如有冲突)

启动Appium server 代码

  • 在学习阶段我们会手动在 terminal 上输入appium server 启动命令,但在实际工作中这种方法是不可取的,所以我们需要使用代码封装启动命令,如果你学习时使用了appium desktop 启动了Appium server 则就不需要使用以下代码
  • 判断Appium server 是否启动成功使用http://host:port/wd/hub/status
  • 以下代码启动Appium server 兼容了windows和mac
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @Time : 2020/9/6 20:26
# @Author : dorom
# @File : start_appium_server.py
# @Software: PyCharm

import subprocess
import os
import time
import requests
import sys
import re


class AppiumServer(object):
    def __init__(self, host, port, udid, webDriver=None):
        self.host = host
        self.port = port
        self.udid = udid
        self.webDriver = webDriver

    def start_appium_server(self):
        """
        启动Appium Server
        :param host: 启动的本地ip
        :param port: 启动端口
        :param udid: 绑定的udid
        """
        bootStarpPort = str(self.port + 1)
        appium_log = os.path.join('.', str(self.port) + '.log')
        if os.path.exists(appium_log):
            os.remove(appium_log)

        cmd = " appium -a {0} -p {1} -bp {2} -U {3} --session-override -g {4}".format(
            self.host, self.port, bootStarpPort, self.udid, appium_log)
        if self.checkPort():
            self.stopPort()

        p = subprocess.Popen(cmd, shell=True, stderr=subprocess.STDOUT)
        flage = False
        checkCount = 0
        while not flage and checkCount < 7:
            time.sleep(1)
            flage = self.checkPort()
            if flage:
                print("端口:{0} Appium 系统服务启动成功".format(self.port))
            if not flage and checkCount == 6:
                print("端口:{0} Appium 系统服务启动成功".format(self.port))
            checkCount += 1

    def checkPort(self):
        """
        端口检查
        :return: check res
        """
        try:
            requests.get("http://{0}:{1}/wd/hub/status".format(self.host, self.port))
            res = True
        except:
            res = False
        return res

    def stopPort(self):
        """
        关闭appium server
        :param port:
        :return:
        """

        platform = sys.platform
        if "win" in platform:
            cmd = 'netstat -ano|findstr "{0}"'.format(self.port)
        else:
            cmd = "ps -ef | grep {0}".format(self.port) + "| awk '{print $2}'"
        pid_list = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE).stdout.readlines()
        pattrn = re.compile(r"(\d+)")
        for pid in pid_list:
            if "win" in platform:
                cmd = "taskkill /pid   {0} /f".format(pattrn.findall(str(pid))[-1])
                print(cmd)
            else:
                cmd = 'kill -9 {0}'.format(pattrn.findall(str(pid))[0])
            os.system(cmd)
        print("端口:{0}退出成功".format(self.port))


if __name__ == '__main__':
    appium_server = AppiumServer("127.0.0.1", 4723, "udid")
    appium_server.start_appium_server()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值