python appium环境搭建

python + appium 环境配置

环境搭建

1. python环境

  1. 下载安装python。将 pip.exepython.exe 所在路径添加到环境变量:Path:

    1. D:\AZ\python3\python_install\Scripts;D:\AZ\python3\python_install
      
  2. 安装python库:pip install Appium-Python-Client

  3. 环境检查:

    1. C:\Users\wztshine>python --version
      Python 3.7.1
      
      C:\Users\wztshine>pip --version
      pip 20.1 from d:\az\python3\python_install\lib\site-packages\pip (python 3.7)
      

2. node.js环境

  1. 下载安装node.js,通常安装完成后它会自动添加到环境变量:Path:

    1. C:\Users\wztshine\AppData\Roaming\npm;D:\AZ\nodeJS\
      
  2. 环境检查:

    1. C:\Users\wztshine>npm
      
      Usage: npm <command>
      
      where <command> is one of:
          access, adduser, audit, bin, bugs, c, cache, ci, cit,
          clean-install, clean-install-test, completion, config,
          create, ddp, dedupe, deprecate, dist-tag, docs, doctor,
          edit, explore, fund, get, help, help-search, hook, i, init,
          install, install-ci-test, install-test, it, link, list, ln,
          login, logout, ls, org, outdated, owner, pack, ping, prefix,
          profile, prune, publish, rb, rebuild, repo, restart, root,
          run, run-script, s, se, search, set, shrinkwrap, star,
          stars, start, stop, t, team, test, token, tst, un,
          uninstall, unpublish, unstar, up, update, v, version, view,
          whoami
      
      npm <command> -h  quick help on <command>
      npm -l            display full usage info
      npm help <term>   search for help on <term>
      npm help npm      involved overview
      
      Specify configs in the ini-formatted file:
          C:\Users\wztshine\.npmrc
      or on the command line via: npm <command> --key value
      Config info can be viewed via: npm help config
      
      npm@6.14.6 D:\AZ\nodeJS\node_modules\npm
      

3. 安装 JDK

  1. 下载安装jdk,配置 jdk 和 jre 的环境变量:JAVA_HOME,CLASSPATH,Path

    JAVA_HOME
    D:\Software\jdk1.8
    
    CLASSPATH
    %JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar
    
    Path
    %JAVA_HOME%\bin
    %JAVA_HOME%\jre\bin
    
  2. 环境检查:

    1. C:\Users\wztshine>java
      用法: java [-options] class [args...]
                 (执行类)
         或  java [-options] -jar jarfile [args...]
                 (执行 jar 文件)
      其中选项包括:
          -d32          使用 32 位数据模型 (如果可用)
          -d64          使用 64 位数据模型 (如果可用)
          -server       选择 "server" VM
                        默认 VM 是 server.
      
          -cp <目录和 zip/jar 文件的类搜索路径>
          -classpath <目录和 zip/jar 文件的类搜索路径>
                        用 ; 分隔的目录, JAR 档案
                        和 ZIP 档案列表, 用于搜索类文件。
          -D<名称>=<值>
                        设置系统属性
          -verbose:[class|gc|jni]
                        启用详细输出
          -version      输出产品版本并退出
          -version:<值>
                        警告: 此功能已过时, 将在
                        未来发行版中删除。
                        需要指定的版本才能运行
          -showversion  输出产品版本并继续
          -jre-restrict-search | -no-jre-restrict-search
                        警告: 此功能已过时, 将在
                        未来发行版中删除。
                        在版本搜索中包括/排除用户专用 JRE
          -? -help      输出此帮助消息
          -X            输出非标准选项的帮助
          -ea[:<packagename>...|:<classname>]
          -enableassertions[:<packagename>...|:<classname>]
                        按指定的粒度启用断言
          -da[:<packagename>...|:<classname>]
          -disableassertions[:<packagename>...|:<classname>]
                        禁用具有指定粒度的断言
          -esa | -enablesystemassertions
                        启用系统断言
          -dsa | -disablesystemassertions
                        禁用系统断言
          -agentlib:<libname>[=<选项>]
                        加载本机代理库 <libname>, 例如 -agentlib:hprof
                        另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help
          -agentpath:<pathname>[=<选项>]
                        按完整路径名加载本机代理库
          -javaagent:<jarpath>[=<选项>]
                        加载 Java 编程语言代理, 请参阅 java.lang.instrument
          -splash:<imagepath>
                        使用指定的图像显示启动屏幕
      有关详细信息, 请参阅 http://www.oracle.com/technetwork/java/javase/documentation/index.html。
      
      
      
      C:\Users\wztshine>javac
      用法: javac <options> <source files>
      其中, 可能的选项包括:
        -g                         生成所有调试信息
        -g:none                    不生成任何调试信息
        -g:{lines,vars,source}     只生成某些调试信息
        -nowarn                    不生成任何警告
        -verbose                   输出有关编译器正在执行的操作的消息
        -deprecation               输出使用已过时的 API 的源位置
        -classpath <路径>            指定查找用户类文件和注释处理程序的位置
        -cp <路径>                   指定查找用户类文件和注释处理程序的位置
        -sourcepath <路径>           指定查找输入源文件的位置
        -bootclasspath <路径>        覆盖引导类文件的位置
        -extdirs <目录>              覆盖所安装扩展的位置
        -endorseddirs <目录>         覆盖签名的标准路径的位置
        -proc:{none,only}          控制是否执行注释处理和/或编译。
        -processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
        -processorpath <路径>        指定查找注释处理程序的位置
        -parameters                生成元数据以用于方法参数的反射
        -d <目录>                    指定放置生成的类文件的位置
        -s <目录>                    指定放置生成的源文件的位置
        -h <目录>                    指定放置生成的本机标头文件的位置
        -implicit:{none,class}     指定是否为隐式引用文件生成类文件
        -encoding <编码>             指定源文件使用的字符编码
        -source <发行版>              提供与指定发行版的源兼容性
        -target <发行版>              生成特定 VM 版本的类文件
        -profile <配置文件>            请确保使用的 API 在指定的配置文件中可用
        -version                   版本信息
        -help                      输出标准选项的提要
        -A关键字[=值]                  传递给注释处理程序的选项
        -X                         输出非标准选项的提要
        -J<标记>                     直接将 <标记> 传递给运行时系统
        -Werror                    出现警告时终止编译
        @<文件名>                     从文件读取选项和文件名
      

4. android sdk 安装

  1. 下载解压andrid sdk,配置环境变量 ANDROID_HOME,Path
ANDROID_HOME:D:\AZ\android_sdk

Path: %ANDROID_HOME%\platform-tools; %ANDROID_HOME%\tools;

  1. 环境检查:

    可以通过USB插上安卓手机,打开手机的开发者选项。

C:\Users\wztshine>adb devices
List of devices attached
443ddcb8        device

5. 安装 appium

  1. 下载appium:https://bitbucket.org/appium/appium.app/downloads/
  2. 添加到环境变量Path D:\AZ\Appium\node_modules\.bin

  1. 环境检查:
   C:\Users\wztshine>appium-doctor
   Running Android Checks
   ✔ ANDROID_HOME is set to "D:\AZ\android_sdk"
   ✔ JAVA_HOME is set to "D:\AZ\jdk1.8."
   ✔ ADB exists at D:\AZ\android_sdk\platform-tools\adb.exe
   ✔ Android exists at D:\AZ\android_sdk\tools\android.bat
   ✔ Emulator exists at D:\AZ\android_sdk\tools\emulator.exe
   ✔ Android Checks were successful.

   ✔ All Checks were successful

编写脚本

import unittest
from appium import webdriver

class Test_Settings(unittest.TestCase):
    desired_caps = {'platformName': 'Android',  # 平台名称
                    'platformVersion': '10',  # 系统版本号
                    'deviceName': '39504f3231593398',  # 设备名称。adb devices出来的东西
                    'appPackage': 'com.android.settings',  # apk的包名
                    'appActivity': 'com.android.settings.Settings',  # activity 名称
                    'automationName': 'UiAutomator1',
                    'noReset': True,
                    'fullReset': False,
                    'unicodeKeyboard': True,
                    'resetKeyboard': True
                    }
    driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_caps)  # 连接Appium

    def test_screen(self):
        self.driver.get_screenshot_as_file(r'C:\Users\wztshine\Desktop\PUA\ph.png')


if __name__ == '__main__':
    unittest.main(verbosity=2)

附录:异常

1. 启动脚本后,总是自动安装Unlock,Appium Settings等app,并且需要手动确认。

//注释掉文件 Appium\node_modules\appium\lib\devices\android\android.js 里面的两句话

// this.pushSettingsApp.bind(this),
// this.pushUnlock.bind(this),

2. 出错信息里含有"ps 'uiautomator',

如:A new session could not be created. (Original error: Command failed: C:\Windows\system32\cmd.exe /s /c "C:\Users\sxie\AppData\Local\Android\sdk\platform-tools\adb.exe -s emulator-5554 shell "ps 'uiautomator'""

打开Appium\node_modules\appium\node_modules\appium-adb\lib\adb.js文件,将

this.shell("ps '" + name + "'", function (err, stdout) {
if (err) return cb(err);

替换成

this.shell_grep("ps", name, function (err, stdout) {
if (err) {
logger.debug("No matching processes found");
return cb(null, []);
}

并在当前函数上方,添加一个新函数:

ADB.prototype.shell_grep = function (cmd, grep, cb) {
if (cmd.indexOf('"') === -1) {
cmd = '"' + cmd + '"';
}
var execCmd = 'shell ' + cmd + '| grep ' + grep;
this.exec(execCmd, cb);
};

3. 错误:Could not sign with default certificate.

​ 以管理员身份运行Appium

posted @ 2021-03-25 22:38  wztshine  阅读(141)  评论(0编辑  收藏  举报