精华内容
下载资源
问答
  • Appium使用教程

    2021-06-08 10:41:32
    Appium使用教程,基本介绍,实现原理

    一、Appium测试对象

    Appium 的测试对象包括:原生 app,混合 app,移动 web app(就是用手机浏览器打开的网址)

    二、Appium介绍

    Appium是一个开源的自动化测试工具,其支持iOS和安卓平台上的原生的,基于移动浏览器的,混合的应用

    1、使用Appium进行自动化测试有两个好处

    Appium在不同平台中使用了标准的自动化APIs,所以在跨平台时,不需要重新编译或者修改自己的应用

    Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架.Appium实现了真正的跨平台自动化测试

    2、Appium架构

    Appium 是一个用Node.js编写的HTTP server,它创建、并管理多个 WebDriver sessions 来和不同平台交互,如 iOS ,Android等

    Appium 开始一个测试后,就会在被测设备(手机)上启动一个 server ,监听来自 Appium server的指令. 每种平台像 iOS 和Android都有不同的运行、和交互方式。所以Appium会用某个桩程序“侵入”该平台,并接受指令,来完成测试用例的运行

    三、Appium环境搭建(Android)

    1、需要准备

    1. jdk

    2. android SDK

    3. appium

    4. nodejs

    5. appium lib
      选择Python版本的Lib: Appium-Python-Client-0.22.tar.gz

    由于Appium依赖于Selemium,所以还要下载 Selemium Lib: selenium-2.53.2.tar.gzhttps://pypi.python.org/pypi/selenium

    1. python

    2、安装、配置

    将上述软件依次安装

    1. 安装JDK, 配置环境变量
    2. 安装Android SDK, 配置环境变量
    3. 安装Appium-Windows-Desktop
    4. 安装Appium-Python-Client
    5. 安装模拟器

    四、Appium的实现原理和自动化原理

    1、实现步骤过程

    1. 调用Android adb完成基本的系统操作
    2. 向Android上部署bootstrap.jar
    3. bootstrap.jar Forward Android的端口到PC机器上
    4. PC上监听端口接收请求,使用webdriver协议
    5. 分析命令并通过forward 端口发给bootstrap.jar
    6. bootstrap.jar接收请求并把命令发给uiautomator
    7. ui automator执行命令

    2、自动化原理

    在这里插入图片描述
    Test script:
    这是我们的测试程序,是测试逻辑的实现部分

    Appium Server:
    这是一个 JavaScript 代码实现的程序。是运行在 Node.js 里面的

    被测试 app:
    运行在真实设备或者模拟器中

    这个测试系统运行起来交互关系:测试程序(Test scrip),告诉 Appium Server 做什么操作。之间有 http 的连接,通过 http 请求发送命令给 Appium Server ,Appium Server 接收到测试程序的命令后,再发出命令给设备上运行的控制程序,控制程序调用相应自动化库里面的方法去执行界面的控制

    五、Appium的andorid基本架构介绍

    1、常见布局视图

    线性布局: LinerLayout
    相对布局: RelativeLayout
    帧布局: FrameLayout, 叠放
    普通视图: View
    切换视图: ListView, 注意, 其中的元素会动态变化
    HierarchyViewer, uiautomatorviewer

    2、基本控件

    TextView: 文本
    Button: 按钮
    EditText: 输入框
    ImageView: 图片
    其他: Alert(警告框)/Toast(提示消息)/SeekBar(滑块)/Webview(嵌入网页)

    3、控件常见属性

    index: 索引, 用于排序

    text: 控件名称(显示文本)

    resource-id: 资源id

    class: 控件类型(文本/按钮/输入框等)

    content-desc: 控件描述

    package: 所属包(一个包就是一个apk)

    enabled: 是否可用

    clickable: 是否可点击

    focused: 是否聚焦状态

    bounds: 坐标

    六、Adb命令基础(之前有写过一篇关于adb的文章)

    博客地址 : https://blog.csdn.net/HONGTester/article/details/107693115?spm=1001.2014.3001.5501

    1、Adb介绍

    Adb(Android Debug Bridge): Andoid设备调试桥梁, 可以再PC端通过命令调试Android设备, 如获取设备状态, 安装/卸载app, 上传/下载文件等操作

    2、Adb常用命令

    2.1 开启/关闭服务

    adb start-server: 开启服务
    adb kill-server: 关闭服务

    2.2 连接设备/获取连接状态(自动开启服务)

    adb connect/disconnect 设备名或uuid: 连接/断开连接设备
    adb devices: 查看连接的设备

    2.3 安装/卸载app

    adb install 安装包路径.apk
    adb uninstall apk包名
    通过uiautomatorviewer可以获取获取apk包名

    2.4 上传/下载文件

    上传: adb push 本地文件 设备目录
    下载: adb pull 设备文件 本地目录

    2.5 Copy

    adb push 1.txt /sdcard/
    adb pull sdcard/1.txt

    2.6 adb shell: 可用于查看设备中的文件, exit退出

    pm:
    应用及权限管理 adb shell pm list packages

    am:
    Activity操作 adb shell am start -n 包名/包名.主Activity名

    input:
    模拟按键/输入

    点击(触控)指定坐标:
    adb shell input tap 50 250

    输入文字:
    adb shell input text hello

    按键:
    adb shell input keyevent 3

    滑动:
    adb shell input swipe 300 1000 300 500

    logcat:
    日志查看及过滤(问题定位)

    monkey:
    性能/稳定性测试

    dumpsys:
    性能分析

    screencap:
    截图 adb shell screencap -p /sdcard/01.png

    screenrecord:
    录屏 adb shell screenrecord --time-limit 10 /sdcard/demo.mp4

    展开全文
  • appium使用教程

    万次阅读 2018-02-05 13:18:20
    1: 使用的前提是必须appium的环境搭建完成,比如安卓手机已经打开开发者模式, # 可以连接到电脑,通过 adb devices 可以获取到手机的唯一识别码 # 如下图是appium使用界面,首先我们需要配置appium: 1:...
    1: 使用的前提是必须appium的环境搭建完成,比如安卓手机已经打开开发者模式,
    # 可以连接到电脑,通过 adb devices 可以获取到手机的唯一识别码
    # 如下图是appium的使用界面,首先我们需要配置appium:


    1:第一步我们必须下载到我们需要安卓的apk,点击choose按钮,把apk加载进来: 如下图红色按钮点击就可以加载进来


    2: 选择我们apk的包名.注意这个包名在安卓的代码里面有个mainfest.xml 文件里面可以找到包名,
    首先我们需要对apk进行反编译:
    反编译包的下载地址如下: http://download.csdn.net/download/zhuiqiuaaa/10109311

    (1): 将以apk结尾的文件改成zip,将这个zip包解压出来: 1 为apk,2为讲apk改为压缩包之后的文件 3: 是解压之后的文件

    (2): 接下来我们对解压的文件进行反编译: 使用的反编译工具是: 下图红框里面的jar包:

    3:将 AXMLPrinter2.S.jar复制到我们需要解压的包里面,而且和解压的文件必须是同级,如下图: 我们需要解压AndroidManifest.xml,就需要将AXMLPrinter2.S.jar 与 AndroidManifest.xml 平级

    4: 接下来,通过命令去反编译我们需要编译的文件:

    首先需要通过命令进入到我们的目录,再写如下命令去反编译
    java -jar AXMLPrinter2.jar AndroidManifest.xml > AndroidManifest.txt

    AndroidManifest.xml 是需要反编译的文件,
    AndroidManifest.txt 是反编译以后文件叫的名字

    (5): 反编译完成以后,打开文件,找到package就是我们需要的包名:

    3: 配置需要启动的actiity : 我们需要在mainfest文件里面找到他: 如下图有main何launcher就是我们需要的activity

    4: 选择工具为Android,自动化框架为appium

    5: 选择我们需要的运行到手机的sdk,注意这个sdk和我们手机的版本号要保持一致:

    6: 填写 手机唯一识别码 Devices Name ,通过 adb devices

    到此我们的环境就已经搭建完成
    展开全文
  • Appium使用教程_Android篇

    万次阅读 多人点赞 2016-05-16 16:40:39
    一、Appium介绍 Appium是一个开源的自动化测试工具,其支持iOS和安卓平台上的原生的,基于移动浏览器的,混合的应用。 1、Appium 理念 Appium是基于以下的四个理念设计来满足移动平台测试自动化的要求的: 1)您不...

     

    --by keeng2008@qq.com 2016-05-16

    一、Appium介绍

    Appium是一个开源的自动化测试工具,其支持iOS和安卓平台上的原生的,基于移动浏览器的,混合的应用。

    1、Appium 理念

    Appium是基于以下的四个理念设计来满足移动平台测试自动化的要求的:

    1)您不应该因为需要自动化测试您的应用而不得不以任何形式去重新编译或者修改你的app

    2)您不应该把自己固定在一门特定的语言和一个特定的框架上去实现和运行你的测试

    3)当说到测试自动化APIs的时候,一个移动测试框架不应该做“重新发明轮子”的事情,

    4)一个移动测试自动化框架应该是开源的,无论是在精神上,实际上,还是名义上!

    2、使用Appium进行自动化测试有两个好处

    Appium在不同平台中使用了标准的自动化APIs,所以在跨平台时,不需要重新编译或者修改自己的应用。

    Appium支持Selenium WebDriver支持的所有语言,如java、Object-C、JavaScript、Php、Python、Ruby、C#、Clojure,或者Perl语言,更可以使用Selenium WebDriver的Api。Appium支持任何一种测试框架.Appium实现了真正的跨平台自动化测试。(本文主要介绍Python的用法)

    3、Appium架构

    Appium 是一个用Node.js编写的HTTP server,它创建、并管理多个 WebDriver sessions 来和不同平台交互,如 iOS ,Android等等. 

    Appium 开始一个测试后,就会在被测设备(手机)上启动一个 server ,监听来自 Appium server的指令. 每种平台像 iOS 和Android都有不同的运行、和交互方式。所以Appium会用某个桩程序“侵入”该平台,并接受指令,来完成测试用例的运行。

     

     

     

    二、Appium环境搭建(Android)

    1、首先需要准备

    1) jdk(步骤不再啰嗦)

    2) android SDK,下载地址:http://developer.android.com/sdk/index.html,下载sdk tools,可能需要FQ,提供一个国内下载地址:http://www.androiddevtools.cn/

    3) appium,下载地址:http://appium.io/

    4) nodejs,下载地址:https://nodejs.org/en/

    5) appium lib,下载地址:http://appium.io/downloads.html

         选择Python版本的Lib: Appium-Python-Client-0.22.tar.gz

         由于Appium依赖于Selemium,所以还要下载 Selemium Lib: selenium-2.53.2.tar.gz   https://pypi.python.org/pypi/selenium

    6) python, 下载地址:https://www.python.org/, 下载2.X 的版本。

    上述软件都准备好后,则进入搭建步骤。

    2、安装、配置

    将上述软件依次安装。

    1) android sdk安装完毕后,需要配置环境变量

    新建ANDROID_HOME    D:\ProgramFiles (x86)\Android\android-sdk

    在PATH中添加:%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;

    2)  nodejs安装完毕后,需要配置环境变量

    在PATH中添加:D:\Program Files\nodejs;

    3) appium安装完毕后,需要配置环境变量

    D:\Program Files (x86)\Appium\node_modules\.bin;

    4) 配置好后,启动cmd,

    输入node -v,查看node安装版本

    输入appium-doctor检查appium的安装环境是否成功,如下图:

     

     

    5) 安装Python,配置环境变量,如C:\Python27,检查是否设置成功,如下图:

     

     

    三、开始例子(Python)

    1) 启动Appium

    打开命令行,输入appium, 显示成功启动:

     

     

    2)连接Android手机(或者模拟器)

    3)编写客户端代码

    假设我们的代码放在目录E:\PythonTest\AppiumClientPython 中。首先把 Appium-Python-Client-0.22.tar.gz 里面的 appium 目录解压到AppiumClientPython 中, 把 selenium-2.53.2.tar.gz里面的 selenium 目录解压到AppiumClientPython中。

    创建文件hello_appium.py , 编辑内容:

    #coding=utf-8

    from appium import webdriver

     

    desired_caps = {}

    desired_caps['platformName'] = 'Android'

    desired_caps['platformVersion'] = '4.4.2'

    desired_caps['deviceName'] = 'Android Emulator'

    desired_caps['appPackage'] = 'com.android.calculator2'

    desired_caps['appActivity'] = '.Calculator'

     

    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)

    driver.find_element_by_name("1").click()

    driver.find_element_by_name("5").click()

    driver.find_element_by_name("9").click()

    driver.find_element_by_name("9").click()

    driver.find_element_by_name("5").click()

    driver.find_element_by_name("+").click()

    driver.find_element_by_name("6").click()

    driver.find_element_by_name("=").click()

    driver.quit()

     

    4)运行

    打开命令行,cd到E:\PythonTest\AppiumClientPython 中,运行 python hello_appium.py, 正常情况可以看到手机按照代码控制,打开计算器,逐个点击按钮完成计算。

    四、Appium文档

    1、安装应用后打开

    import os

    from appium import webdriver

    APK_PATH = 'apk/my-debug.apk'

    COMMAND_EXECUTOR_URL = 'http://localhost:4723/wd/hub'

      

        desired_caps = {}

        desired_caps['platformName'] = 'Android'

        desired_caps['platformVersion'] = '5.0'

        desired_caps['deviceName'] = 'Android Emulator'

        desired_caps['app'] = os.path.abspath(APK_PATH)

     

        driver = webdriver.Remote(COMMAND_EXECUTOR_URL, desired_caps)

     

    2、查找控件

    1)通过名称查找

    btn = driver.find_element_by_name("+")

    2)  通过ID查找

    start_btn =driver.find_element_by_id('com.cn21.myapp:id/instruction_close_btn')

    或 start_btn = driver.find_element_by_id('instruction_close_btn')

    3)通过类名查找

    child_text =parent.find_element_by_class_name('android.widget.TextView')

    4)通过android_uiautomator查找

    start_btn =driver.find_element_by_android_uiautomator('new UiSelector().clickable(true)')

    以上find_element_by_XX 都是返回符合条件的第一个控件,如果要返回多个控件,可以调用 find_elements_by_XX, 返回的是一个list。

    注意:如果找不到符合条件的控件,会抛出异常。

    5)查找结点,不希望返回异常,写个函数就行了

    def find_element_by_id_no_except(driver, id):

        element = None

        try :

            element = driver.find_element_by_id(id)

        except Exception,e:

            print Exception, ':', e

        return element

     

    3、模拟按钮点击

    login_btn.click()

    注意:有的点击如果需要等待动画、或者网络请求,建议等待一会:

    import time

    time.sleep(2)  # 睡眠2秒

     

    4、输入框输入文本

    user_input.send_keys('123456')

    注意:Android如果要正确输入,需要把使用系统自带的输入法,第三方输入法无法正确输入。

    5、模拟点击返回键

    driver.press_keycode(4)

    其中按钮的定义,由Android里的KeyEvent.java里定义的,所以其它的Android按钮也是支持的。

    6、关闭driver

    driver.quit()

    注意:一定要记得关闭driver, 否则下次连接的时候可能会出异常,因为Appium以为你上次未关闭,会创建Session失败。

    为了避免代码出现异常而没有关闭,可以在捕获异常时再关闭。

    7、滑动界面

    下面的例子,演示点击屏幕中间,并向上拉动(相当于查看列表下面的内容了)。

    from appium.webdriver.common.touch_action import TouchAction

    def test_scroll_down(driver):

        screen = driver.get_window_size()

        action = TouchAction(driver)

        action.press(x=screen['width']/2,y=screen['height']/2)

        action.move_to(x=0,y=-screen['height']/10)

        action.release()

        action.perform()

     

    等等,怎么获取界面的属性来验证正确性?

    8、获取界面属性,控件属性

    1)获取当前Activity名称

    activity = driver.current_activity

    2) 获取屏幕宽高

    screen = driver.get_window_size()

    3)获取控件文本

    mobile_name.get_attribute('text') 或者 mobile_name.text

    4)获取控件类名

    mobile_name.get_attribute('className')

    5)判断控件是否显示

    mobile_name.is_displayed() 或者 mobile_name.get_attribute('displayed')

    6)获得控件位置

    mobile_name.location

    7)获得控件大小

    mobile_name.size

    8)查找控件子结点

    parent.find_elements_by_class_name('android.widget.TextView')

    同样:查找控件的其它方法,也适用于查找子结点。

     

    对于交互后的验证,无法验证到具体的数据内容,可以验证当前的Activity,或者文本,或者列表是否为空等等。

    更多参考:http://blog.csdn.net/crisschan/article/details/50416860

     

    五、结合单元测试框架编写用例

    Python自带有unittest用于单元测试,其结构类似于JUnit。

    一个测试类需要继承于unittest.TestCase, 方法setUp 用于测试初始化,每个用例开始前都会调用,tearDown用于用例结束时调用,每个以test开始的函数被当成一个用例。

    test_random.py

    import random

    import unittest

     

    class TestSequenceFunctions(unittest.TestCase):

     

        def setUp(self):

            self.seq = range(10)

     

        def test_shuffle(self):

            # make sure the shuffled sequence does not lose any elements

            random.shuffle(self.seq)

            self.seq.sort()

            self.assertEqual(self.seq, range(10))

     

            # should raise an exception for an immutable sequence

            self.assertRaises(TypeError, random.shuffle, (1,2,3))

     

        def test_choice(self):

            element = random.choice(self.seq)

            self.assertTrue(element in self.seq)

     

        def test_sample(self):

            with self.assertRaises(ValueError):

                random.sample(self.seq, 20)

            for element in random.sample(self.seq, 5):

                self.assertTrue(element not in self.seq)

     

    if __name__ == '__main__':

        unittest.main(verbosity=2)

     

    运行此测试: python test_random.py 可以查看测试的结果

     

     

    上面结果显示,有2个用例测试通过,1个用例不通过。

    可以在一个目录下写多个以test开头的测试文件,然后通过以下命令运行所有测试类:

    python -m unittest discover . -v

     

    六、完整例子

    1、测试登陆登出功能

    test_myapp_login_logout.py

    #coding=utf-8
    #
    测试登陆登出功能
    #
    用例1:快速登陆,验证登陆后的Activity为MainActivity
    # 用例2:普通登陆,输入用户名密码,验证登陆后的Activity为MainActivity
    # 用例3:快速登陆后注销,验证注销后的Activity为LoginActivity


    import unittest
    import appium_myapp
    import appium_util
    from appium import webdriver
    import os

    class LoginLogoutTest(unittest.TestCase):
        ##
       
    def setUp(self):
            #print('Installing ...')
           
    desired_caps = {}
            desired_caps['platformName'] = 'Android'
           
    desired_caps['platformVersion'] = '5.0'
           
    desired_caps['deviceName'] = 'Android Emulator'
           
    desired_caps['app'] = os.path.abspath(appium_myapp.APK_PATH)
            self.driver = webdriver.Remote(appium_util.COMMAND_EXECUTOR_URL, desired_caps)
           
        def tearDown(self):
            self.driver.quit()
           
        def test_FastLogin(self):
            appium_myapp.agree_document(self.driver)
            appium_myapp.quick_login(self.driver)
            self.assertTrue(self.driver.current_activity.endswith('MainActivity'))
           
        def test_SlowLigin(self):
            appium_myapp.agree_document(self.driver)
            appium_myapp.slow_login(self.driver)
            self.assertTrue(self.driver.current_activity.endswith('MainActivity'))
           
        def test_Logout(self):
            appium_myapp.agree_document(self.driver)
            appium_myapp.quick_login(self.driver)
            if (self.driver.current_activity.endswith('MainActivity')):
                appium_myapp.test_logout(self.driver)
                self.assertTrue(self.driver.current_activity.endswith('LoginActivity'))

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

       
           

     

     

    2、自动乱点测试崩溃的情况

    auto_test_myapp.py

    #coding=utf-8
    import random
    import time
    import traceback

    import appium_myapp


    def auto_interact(driver):
        activity = driver.current_activity
        # 一定的机率滑动,返回键,点击
       
    rate = random.random()
        if rate < 0.1:
            print activity + ' Scroll Down'
           
    appium_myapp.test_scroll_down(driver)
        elif rate < 0.2:
            print activity + ' Scroll Up'
           
    appium_myapp.test_scroll_up(driver)
        elif rate < 0.3:
            print activity + ' Key Back'
           
    driver.press_keycode(4)
        else:
            btn_list = driver.find_elements_by_android_uiautomator('new UiSelector().clickable(true)')
            if (len(btn_list) > 0):
                index = random.randint(0, len(btn_list) - 1)
                print activity + ' Click Button index = %d' % (index,)
                btn_list[index].click()


    def main():
        driver = None
        try
    :
            driver = appium_myapp.install_app()
            time.sleep(appium_myapp.LONG_WAIT_TIME)
            appium_myapp.agree_document(driver)
            appium_myapp.quick_login(driver)
            step = 0
           
    while step < 100:
                if (driver.current_activity.endswith('LoginActivity')):
                    appium_myapp.test_login(driver)
                elif (driver.current_activity.endswith('.Launcher')):
                    driver.background_app(1)
                    driver.launch_app()
                else:
                    auto_interact(driver)
                    time.sleep(appium_myapp.CLICK_WAIT_TIME)
                step += 1
           
    # 正常退出
           
    driver.quit()

        except Exception, e:
            print Exception, ":", e
            traceback.print_exc()
            # 异常退出
           
    if (driver != None):
                driver.quit()


    if __name__ == '__main__':
        for i in range(20000):
            try:
                main()
            except Exception, e:
                print Exception, ":", e
                traceback.print_exc()

       
           

           

     

    注:为了更方便的编写python代码,推荐使用PyCharm IDE,编辑代码跟Java一样方便。

     

    七、参考资料:

    1)官网 http://appium.io/index.html

    2)appium/python-client使用文档https://github.com/appium/python-client

    3)搭建appium的android环境http://www.cnblogs.com/qiaoyeye/p/5131382.html

    4)Appium移动自动化测试(四)http://www.cnblogs.com/fnng/p/4579152.html

    5)AppiumPython API http://blog.csdn.net/crisschan/article/details/50416860

    6)appium常用方法总结 http://www.cnblogs.com/fanxiaojuan/p/4882676.html

     

     

     

     

    展开全文
  • appium 使用教程亲测哦

    2019-09-05 17:23:48
    安装教程: https://pan.baidu.com/s/1C-WB6XREIE0YHaZJeujf4g 使用步骤: 1、手机用数据线连接电脑 2、选择文件夹方式连接 3、手机打开usb调试并允许 4、电脑命令行查看是否连接成功,>adb devices 出现 ...

     

    安装教程:

    https://pan.baidu.com/s/1C-WB6XREIE0YHaZJeujf4g

    使用步骤:

    1、手机用数据线连接电脑

    2、选择文件夹方式连接

    3、手机打开usb调试并允许

    4、电脑命令行查看是否连接成功,>adb devices 出现

    List of devices attached
    f431d9        device

    说明连接成功

    5、打开appium桌面版

    点击 

    start server 。。

    出现

    [Appium] Welcome to Appium v1.10.0

    [Appium] Appium REST http interface listener started on 0.0.0.0:4723

    说明连接成功

    6、手机打开一个app

    7、查看打开的app 包名

    adb shell dumpsys window windows | findstr "Current"

    adb shell dumpsys window w |findstr \/ |findstr name=

    mSurface=Surface(name=com.tll.wireless/com.tmall.wireless.maintab.module.TMMainTabActivity)

    com.tll.wireless 就是的

    根据appPackage包名查看appActivity

    adb shell monkey -p com.android.jinvovocni -v -v -v 1

     

    元素定位技巧https://www.jianshu.com/p/efe9dcf8bbaf

    
     

    8、写代码走起吧

    # coding=utf-8
    
    from appium import webdriver
    import time
    
    
    desired_caps = {}
    # 设备信息
    desired_caps['platformName'] = 'Android'
    desired_caps['platformVersion'] = '8.1.0'
    desired_caps['deviceName'] = '18-A01'
    # app信息
    desired_caps['appPackage'] = 'com.tll.wireless'
    desired_caps['appActivity'] = '.splash.TMSplashActivity'
    
    driver = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps)
    time.sleep(5)
    
    # result = driver.page_source
    # print(result)
    # print('-----', type(result))
    # time.sleep(2)
    xpath_class = "//*[contains(@content-desc,'分类')]"
    driver.find_element_by_xpath(xpath_class).click()
    time.sleep(10)

    另外一个参考:https://www.jianshu.com/p/3afa9be453cc 

    展开全文
  • 在之前安装appium的时候说过我们有两种方法安装,也就有两种结果,一种是有界面的,一种是没有界面的,首先我们先讲一下有界面的,以及界面有哪些东西。首先看第一幅图,如果你的是windows那么界面就应该是这样的,...
  • Appium使用教程(一)——安装appium

    千次阅读 2017-11-24 12:35:18
    Appium_Home=C:\Program Files (x86)\Appium 2、 path中追加 C:\Program Files (x86)\Appium\node_modules.bin;%Appium_Home% 3、 验证appium安装成功 双击快捷方式,得到如下图
  • Appium使用教程(六)——元素操作

    千次阅读 2017-11-29 16:30:12
    找到元素后可以对元素进行的操作,例如上面讲...如果60s内没有接收到新命令,appium会自动断开连接,如果我需要很长时间做driver之外的操作,可能延长接收新命令的超时时间 desired_caps[“newCommandTimeout”]=1800

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 245
精华内容 98
关键字:

appium使用教程