【python-appium】Appium的一些坑问题错误解决 与 技巧集锦

问题

1. error: Failed to start an Appium session, err was: Error: Requested a new session but one was in progress

之前的会话没有关闭,然后你又运行了测试实例,也没有设置覆盖.

解决:

1. 重新停止appium服务,开启Appium服务

2. 在Genarel Setting那里设置覆盖Session,重启Appium

测试结束在AfterClass加driver.quit()

2.
error: Failed to start an Appium session, err was: Error: Command
failed: C:\Windows\system32\cmd.exe /s /c
“D:\android-sdk-windows\platform-tools\adb.exe -s adb server version
(32) doesn’t match this client (36); killing…

wait-for-device”

error: could not install smartsocket listener: cannot bind to 127.0.0.1:5037:

没有链接上手机或者模拟器,请确认已经连接成功,重新链接

3.
error: Android devices must be of API level 17 or higher. Please change
your device to Selendroid or upgrade Android on your device.

手机系统低于4.2,appium不支持4.2.2以下的系统,请换一个手机或者模拟器来测试。

4. Error: Permission to start activity denied.

**activity在清单文件里面没添加android:exported=”true”的话,你不能直接打开对应的activity,需要从启动页activity打开。

exported属性就是设置是否允许activity被其它程序调用**

5.
error: Failed to start an Appium session, err was: Error: Activity used
to start app doesn’t exist or cannot ve launched! Make usre it exists
and is launchable activity

要打开的activity不存在,activity路径错误,改为完整正确的activity路径

6.
error: Failed to start an Appium session, err was: Error: ‘java -
version’ failed. Error: Command failed: C:\Windows\system32\cmd.exe /s
/c “java -version”

Java版本错误,请安装最新的版本

7.>
info: [debug] Error: Command failed: C:\Windows\system32\cmd.exe /s /c
“D:\android-sdk-windows\platform-tools\adb.exe -s 8806a0b0 shell “echo
‘ready‘“error: unknown host service

链接手机失败,重新链接手机即可,我就是重新拔插了一下usb

Error: Command failed: C:\Windows\system32\cmd.exe /s /c
“D:\android-sdk-windows\platform-tools\adb.exe -s 8806a0b0 shell “echo
‘ping’”“

error: unknown host service

adb被突然占用导致,例如你在运行用例的时候运行了模拟器。

7. UIAutomatorViewer提示: Unable to connect to adb. Check if adb is installed correctly

解决,sdk升级到了25产生的问题。

解决方法:

  1. 将adb.exe 复制一份到uiautomatorviewer.bat 目录下
  2. 修改uiautomatorviewer.bat文件最后一行(改binddir=%prog_dir%为自己的platform-tools本地路径)

技巧

1. 每次测试都重新安装app

为capabilities色设置noReset为true

capabilities.setCapability(“noReset”, true);

2. 中文乱码

这都是编码问题:

1.方法1:

Android Studio修改文件编码的方法,最底部的UTf-8,点击选GBK就可以了,reload文件。(ps: 先把文件内容全选复制一下再转换编码,再粘贴,不然文件内容就变乱码了)

2.方法2:

用的是原来的UTF-8编码,然后在测试module的build.gradle里面添加三行代码

tasks.withType(JavaCompile){
    options.encoding = ‘UTF-8‘
}
  • 1
  • 2
  • 3

3. 清除编辑框EditText内容

这个问题好像是看手机系统的,我之前的手机就会出现sendKeys的时候没有全选去掉本来的内容,现在都会自动全选覆盖了,这个也不算问题了。

    /**
     * 逐字删除编辑框中的文字
     * @param element 文本框架控件
     */
    public void clearText(AndroidElement element){
        String className = element.getClass().getSimpleName();
        if (className.equals("EditText")){
            String text = element.getText();
            //跳到最后
            driver.pressKeyCode(KEYCODE_MOVE_END);
            for (int i = 0; i < text.length(); i ++){
                //循环后退删除
                driver.pressKeyCode(BACKSPACE);
            }
        }else {
            print("不是文本输入框架,无法删除文字");
        }

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

4. 点击输入法键盘的回车搜索

方法1: 切换输入法

利用adb命令先切换为自己的输入法,按了搜索再切换为appium的输入法

查看当前手机的输入法

cmd执行下面的的代码

adb shell ime list -s

可以看到类似下面的结果,

C:\Users\LITP>adb shell ime list -s
com.baidu.input_mi/.ImeService
com.sohu.inputmethod.sogou.xiaomi/.SogouIME
io.appium.android.ime/.UnicodeIME

C:\Users\LITP>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

执行adb命令

先写好一个执行cmd的方法

    /**
     * 执行adb命令
     * @param s 要执行的命令
     */
    private void excuteAdbShell(String s) {
        Runtime runtime=Runtime.getRuntime();
        try{
            runtime.exec(s);
        }catch(Exception e){
            print("执行命令:"+s+"出错");
        }
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在需要搜索的时候执行下面的代码,切换的输入法用自己查看列表的输入法内容,我这里是搜狗输入法

        //使用adb shell 切换输入法-更改为搜狗拼音,这个看你本来用的什么输入法
        excuteAdbShell("adb shell ime set com.sohu.inputmethod.sogou.xiaomi/.SogouIME");
        //再次点击输入框,调取键盘,软键盘被成功调出
        clickView(page.getSearch());
        //点击右下角的搜索,即ENTER键
        pressKeyCode(AndroidKeyCode.ENTER);
        //再次切回 输入法键盘为Appium unicodeKeyboard
        excuteAdbShell("adb shell ime set io.appium.android.ime/.UnicodeIME");

转自:http://blog.csdn.net/niubitianping/article/details/52624417

原文地址:https://www.cnblogs.com/liuyl-2017/p/8117353.html

时间: 2024-10-06 10:08:14

【python-appium】Appium的一些坑问题错误解决 与 技巧集锦的相关文章

Python + Robotframework + Appium 之APP自动化测试小试牛刀(Android)

Robotframework如何好?这里先不说了~ Python更不用说了~ Appium前面的文章有介绍~ 今天直接来Python+Robotframework+Appium 三者结合起来,对Andoid app小试牛刀下,后续再作更多介绍. 1.环境搭建(之前已经介绍过Python+Appium了) 直接用pip命令安装: pip install robotramework pip install robotframework-appiumlibrary 最好再安装  pip install

基于Python的Appium环境搭建合集

自动化一直是测试圈中的热聊,也是大家追求的技术方向.在测试中,往往回归测试也是测试人员的“痛点”.对于迭代慢.变更少的功能,就能用上自动化来替代人工回归,减轻工作量. 问题 在分享环境搭建之前,先抛出我的一个疑问吧. app启用时,分不同的场景: 1.首次安装启用,有欢迎页: 2.非首次启用,直接进入到登录页: 3.配置了推荐展示时,启用app,会先展示推荐内容,才进入到登录页. 不同场景对应的activity都是不同的,我目前处理办法是,写了个输入函数,加了个if判断去对应不同的activit

使用python编写appium用例

安装Python依赖 pip3.4 install nose pip3.4 install selenium pip3.4 install Appium-Python-Client 运行测试用例android_contacts.py import os import unittest from appium import webdriver from time import sleep # Returns abs path relative to this file and not cwd PA

python,appium,初步 --L简

 python,appium 测试环境搭建  appium自动化,简介 appium,就是一个翻译: 客户端,是大头儿:appium仅仅是个翻译  Appium自动化,具体执行步骤 ## 关于设备信息: 因为设备繁多: 不同设备,对应的底层工具不同 所以,我们应该,在python脚本,提供设备信息:(Desired Capabilities) ## adb 简介  实例代码 from appium import webdriver import time desired_caps = {} #安

Windows&amp;Appium&amp;Python自动化测试-Appium安装

一.安装node.js 官方下载地址为:https://nodejs.org/en/download 傻瓜式安装即可,安装完成后,CMD中运行node -v查看版本号 输入npm 出现如上图信息,表示 node.js 安装成功.npm 是一个 node 包管理和分发工具,有了 npm,后面就可以输入指令在线安装 appium """ 此处内容无需执行,仅供参考,虽然也可以实现,但后边内容给了更好方式 安装appium服务端,可通过cmd 下输入 npm install -g

python manage.py shell之后的一些错误:

1. 在执行python manage.py shell之后的一些错误: [email protected]:~/myobject$ python manage.py shell /usr/lib/python2.7/dist-packages/pkg_resources.py:1049: UserWarning: /home/wyl/.python-eggs is writable by group/others and vulnerable to attack when used with

python问题:IndentationError:expected an indented block错误解决《转》

python问题:IndentationError:expected an indented block错误解决 标签: python语言 2012-07-07 17:59 125145人阅读 评论(9) 收藏 举报  分类: python学习笔记(2)  原文地址:http://hi.baidu.com/delinx/item/1789d38eafd358d05e0ec1df Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的Python程序员,也可能陷入陷阱

python错误解决:SyntaxError: Non-ASCII character &#39;\xd3&#39; in file crawler.py

我写的python代码中遇到编码问题:SyntaxError: Non-ASCII character '\xd3' in file crawler.py 原因:代码中有需要输出中文的部分,但是运行时出现了这个错误: 错误中提示看这个链接:http://www.python.org/peps/pep-0263.html 解决问题的方法: 如果在python中出现了非ASCII码以外的其他字符,需要在代码的开头声明字符格式 解决之一: 在程序的开头加上#-*-coding:utf-8-*- ~te

python学习笔记系列----(六)错误和异常

python至少有2类不同的错误:语法错误(Syntax Errors)和异常(Exceptions). 8.1 语法错误 这个单词应该还是很有必要认识的,呵呵,语法错误,也叫解析错误,是我们最不愿意发生的错误,直接拿官网的例子: >>> while True print 'Hello world' File "<stdin>", line 1, in ? while True print 'Hello world' ^ SyntaxError: inva