zoukankan      html  css  js  c++  java
  • python appium环境搭建

    python + appium 环境配置

    环境搭建

    1. python环境

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

      1. D:AZpython3python_installScripts;D:AZpython3python_install
        
    2. 安装python库:pip install Appium-Python-Client

    3. 环境检查:

      1. C:Userswztshine>python --version
        Python 3.7.1
        
        C:Userswztshine>pip --version
        pip 20.1 from d:azpython3python_installlibsite-packagespip (python 3.7)
        

    2. node.js环境

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

      1. C:UserswztshineAppDataRoaming
        pm;D:AZ
        odeJS
        
    2. 环境检查:

      1. C:Userswztshine>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:Userswztshine.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
        odeJS
        ode_modules
        pm
        

    3. 安装 JDK

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

      JAVA_HOME
      D:Softwarejdk1.8
      
      CLASSPATH
      %JAVA_HOME%libdt.jar;%JAVA_HOME%lib	ools.jar
      
      Path
      %JAVA_HOME%in
      %JAVA_HOME%jrein
      
    2. 环境检查:

      1. C:Userswztshine>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:Userswztshine>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:AZandroid_sdk
    
    Path: %ANDROID_HOME%platform-tools; %ANDROID_HOME%	ools;
    

    1. 环境检查:

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

    C:Userswztshine>adb devices
    List of devices attached
    443ddcb8        device
    

    5. 安装 appium

    1. 下载appium:https://bitbucket.org/appium/appium.app/downloads/
    2. 添加到环境变量Path D:AZAppium ode_modules.bin

    1. 环境检查:
       C:Userswztshine>appium-doctor
       Running Android Checks
       ✔ ANDROID_HOME is set to "D:AZandroid_sdk"
       ✔ JAVA_HOME is set to "D:AZjdk1.8."
       ✔ ADB exists at D:AZandroid_sdkplatform-toolsadb.exe
       ✔ Android exists at D:AZandroid_sdk	oolsandroid.bat
       ✔ Emulator exists at D:AZandroid_sdk	oolsemulator.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:UserswztshineDesktopPUAph.png')
    
    
    if __name__ == '__main__':
        unittest.main(verbosity=2)
    

    附录:异常

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

    //注释掉文件 Appium ode_modulesappiumlibdevicesandroidandroid.js 里面的两句话

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

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

    如:A new session could not be created. (Original error: Command failed: C:Windowssystem32cmd.exe /s /c "C:UserssxieAppDataLocalAndroidsdkplatform-toolsadb.exe -s emulator-5554 shell "ps 'uiautomator'""

    打开Appium ode_modulesappium ode_modulesappium-adblibadb.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

  • 相关阅读:
    powerdesigner简单使用
    linux进程间通信方式
    linux中fork()函数详解(原创!!实例讲解)
    platform_device与platform_driver
    当心不静的时候
    linux移植简介[MS2]
    使用maven的tomcat:run进行web项目热部署
    SpringMVC &amp; Struts2
    开放产品开发(OPD):OPD框架
    【Android个人理解(八)】跨应用调用不同组件的方法
  • 原文地址:https://www.cnblogs.com/wztshine/p/14579720.html
Copyright © 2011-2022 走看看