appium学习笔记过程中遇到的一些问题汇总

持续更新系列。。

刚开始学时,一个小小的问题都可能要耗费很多时间,甚至是导致从入门到放弃的直接原因hhhhh 。所以写下此篇总结或许会帮到刚开始学习的你!~

1.运行adb device报错,解决办法

2.提示   * daemon not running. starting it now on port 5037 *,解决办法

  • 先查找5037是否被占用netstat -aon|findstr "5037"

          

  • 关闭QQ音乐后,端口被释放

3.运行脚本时报错

  • 下载了Android 6.0 sdk后解决该问题

4.使用Appium Inspector时一直无法启动appAppium+python自动化5-Appium Inspector - 上海-悠悠 - 博客园

  • 点击启动按钮-放大镜按钮后,需要点击“refesh“后才会启动app

5.在脚本中增加swipe(800,800,400,800)后,执行脚本报错:selenium.common.exceptions.WebDriverException: Message: An unknown server-side error occurred while processing the command.

  • 通过appium+python自动化24-滑动方法封装(swipe) - 上海-悠悠 - 博客园这个方法实现滑动后再执行脚本就没有报错了。。

  • def swipeUp(driver, t=500, n=1):
        '''向上滑动屏幕'''
        l = driver.get_window_size()
        x1 = l['width'] * 0.5     # x坐标
        y1 = l['height'] * 0.75   # 起始y坐标
        y2 = l['height'] * 0.20   # 终点y坐标
        for i in range(n):
            driver.swipe(x1, y1, x1, y2, t)
    
    def swipeDown(driver, t=500, n=1):
        '''向下滑动屏幕'''
        l = driver.get_window_size()
        x1 = l['width'] * 0.5          # x坐标
        y1 = l['height'] * 0.25        # 起始y坐标
        y2 = l['height'] * 0.75         # 终点y坐标
        for i in range(n):
            driver.swipe(x1, y1, x1, y2,t)
    
    def swipLeft(driver, t=500, n=1):
        '''向左滑动屏幕'''
        l = driver.get_window_size()
        x1 = l['width'] * 0.75
        y1 = l['height'] * 0.5
        x2 = l['width'] * 0.25
        for i in range(n):
            driver.swipe(x1, y1, x2, y1, t)
    
    def swipRight(driver, t=500, n=1):
        '''向右滑动屏幕'''
        l = driver.get_window_size()
        x1 = l['width'] * 0.25
        y1 = l['height'] * 0.5
        x2 = l['width'] * 0.75
        for i in range(n):
            driver.swipe(x1, y1, x2, y1, t)

6.如何获取屏幕大小

  • 如下

  • # 获取屏幕的size
    size = driver.get_window_size()
    print(size)
    # 屏幕宽度width
    print(size['width'])
    # 屏幕高度width
    print(size['height'])

7.执行登陆脚本后,app黑屏闪退

  • 使用调试版本的包即可正常登陆

  • ps.一个小小的引申:原则上应该要用debug的包,但native的操作,应该无所谓的,只有H5的才需要打开debug模式

8.打开本地文件os.system("F:\uploadFile.exe")报错:OSError: [Errno 22] Invalid argument:..........

  • 转义的问题,换成如下输入方式解决问题

    os.system("F:\\uploadFile.exe")

9.书写“from uiautomator import Device”出叹号提示

  • 执行“ pip install uiautomator”解决

10.脚本执行不报错,但一直出警告信息“ResourceWarning: unclosed <socket.socket fd=144, family=AddressFamily.AF_INE”

  • 书写以下代码解决

  • warnings.simplefilter("ignore", ResourceWarning)

11.打印的日志中文字符显示乱码

  • 将file_handler = logging.FileHandler(log_name)代码改成如下解决

  • file_handler = logging.FileHandler(log_name,encoding='utf-8')

12.当elementid一样,text不一样时该怎么定位

  • 用以下语句实现根据text来定位:find_element_by_android_uiautomator('new UiSelector().text(\"13795291583的空间\")')

  • Appium+Python 自动化-appium常用元素定位方法 - ForcePush - 博客园

  • driver.find_element_by_android_uiautomator('new UiSelector().text("Custom View")').click() #text
    
    driver.find_element_by_android_uiautomator('new UiSelector().textContains("View")').click() #textContains
    
    driver.find_element_by_android_uiautomator('new UiSelector().textStartsWith("Custom")').click() #textStartsWith
    
    driver.find_element_by_android_uiautomator('new UiSelector().textMatches("^Custom.*")').click() #textMatches

13.使用逍遥模拟器,执行脚本时报找不到

  • 由于本机的adb版本和逍遥模拟器中的adb版本不一样导致的解决办法是将C:\Windows\System32中的adb.exe、AdbWinApi.dll、AdbWinUsbApi.dll复制到逍遥模拟器的安装目录中,然后删除原来的nox_adb.exe文件,将复制过来的adb.exe重命名为nox_adb.exe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值