zoukankan      html  css  js  c++  java
  • Python Appium 元素定位方法简单介绍

    Python  Appium  元素定位

    常用的八种定位方法(与selenium通用)

    # id定位
    driver.find_element_by_id()
    # name定位
    driver.find_element_by_name()
    # xpath定位
    driver.find_element_by_xpath()
    # class_name定位
    driver.find_element_by_class_name()
    # css 定位
    driver.find_element_by_css_selector()
    # link定位
    driver.find_element_by_link_text()
    # tag定位
    driver.find_element_by_tag_name()
    # partial_link定位
    driver.find_element_by_partial_link_text()
            # 移动端 新增方法
            # accessibility_id 定位
            driver.find_element_by_accessibility_id()
            # Android
            driver.find_element_by_android_uiautomator()
            # ios
            driver.find_element_by_ios_uiautomation()

    id定位

    # resrouce-id属性是id:
    driver.find_element_by_id('username') 

    name定位

    # text属性是name
    
    driver.find_element_by_name(u'请输入用户名')

    Xpath定位

     如下图,使用 uiautomatorviewer.bat 获取页面元素

    注意:SDK自带的uiautomatorviewer.bat无法获取xpath,需要替换一个jar包方可获取xpath。此jar包放到了QQ群:193056556中,有需要的可以进群自取。

    self.driver.find_element_by_xpath("//android.widget.TextView[@text=' ']").click()

    class_name定位

    self.driver.find_element_by_class_name('android.view.View').click()

     (注:一般一个页面上的class属性不唯一,元素不唯一的话定位会报错了)

    accessibility_id 定位

     content-desc即是对应的 accessibility_id

    driver.find_element_by_accessibility_id(u"我的").click()

     

    android_uiautomator 定位

    driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').clear()

    以下是代码实例

    #测试异常登录-用户不存在
    
        def test_aNoUserLogin(self):
    
            driver  = self.driver
            time.sleep(5)
            driver.find_element_by_accessibility_id(u"我的").click()
    
            time.sleep(5)
    
            driver.find_element_by_accessibility_id(u"登录/注册").click()
            time.sleep(2)
    
            driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').clear()
    
            time.sleep(2)
            driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').send_keys('xzbuyer1')
            time.sleep(2)
    
            driver.find_element_by_android_uiautomator('new UiSelector().resourceId("password")').clear()
    
            time.sleep(2)
            driver.find_element_by_android_uiautomator('new UiSelector().resourceId("password")').send_keys('111111')
    
            time.sleep(2)
    
            driver.find_element_by_accessibility_id(u"登录").click()
            time.sleep(18)
    
            get_alertMessage = driver.find_element_by_id('android:id/message').text
            time.sleep(2)
            if get_alertMessage == u'用户不存在':
                print (u"用户不存在,用例执行成功!")
            else:
                print (u"用例执行失败!")
    
    
        def test_bNoPassLogin(self):
    
            driver  = self.driver
            time.sleep(5)
            driver.find_element_by_accessibility_id(u"我的").click()
    
            time.sleep(5)
    
            driver.find_element_by_accessibility_id(u"登录/注册").click()
            time.sleep(2)
    
            driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').clear()
    
            time.sleep(2)
            driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').send_keys('xzbuyer')
            time.sleep(2)
    
            driver.find_element_by_android_uiautomator('new UiSelector().resourceId("password")').clear()
    
            time.sleep(2)
            driver.find_element_by_android_uiautomator('new UiSelector().resourceId("password")').send_keys('1111112')
    
            time.sleep(2)
    
            driver.find_element_by_accessibility_id(u"登录").click()
            time.sleep(18)
    
            get_alertMessage = driver.find_element_by_id('android:id/message').text
            time.sleep(2)
            print (get_alertMessage[0:5])
    
            # if get_alertMessage == u'用户不存在':
            #     print u"用户不存在,用例执行成功!"
            # else:
            #     print u"用例执行失败!"
            #
    
        # 测试正常登录
    
        def test_cLogin(self):
    
            driver = self.driver
            time.sleep(5)
            driver.find_element_by_accessibility_id(u"我的").click()
    
            time.sleep(5)
    
            driver.find_element_by_accessibility_id(u"登录/注册").click()
            time.sleep(2)
    
            driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').clear()
    
            time.sleep(2)
            driver.find_element_by_android_uiautomator('new UiSelector().resourceId("username")').send_keys('xzbuyer')
            time.sleep(2)
    
            driver.find_element_by_android_uiautomator('new UiSelector().resourceId("password")').clear()
    
            time.sleep(2)
            driver.find_element_by_android_uiautomator('new UiSelector().resourceId("password")').send_keys('111111')
    
            time.sleep(2)
    
            driver.find_element_by_accessibility_id(u"登录").click()
            time.sleep(2)
    
            # 判断是否登录成功
    
            print (driver.find_element_by_accessibility_id(u"西藏医药销售公司(测试买家)").get_attribute('name'))
    
            nickName = driver.find_element_by_accessibility_id(u"西藏医药销售公司(测试买家)").get_attribute('name')
            temp = nickName[0:2]
            print  (temp)
            if nickName == u'西藏医药销售公司(测试买家)':
                print ('登录成功!')
    
            else:
                print ('登录失败!')
    
        def tearDown(self):
            self.driver.close_app()
            self.driver.quit()
  • 相关阅读:
    Hadoop学习------Hadoop安装方式之(一):单机部署
    Linux系统上安装、卸载JAVA、TOMCAT的方法
    在Linux系统上安装Oracle数据库
    C:Program Files (x86)MSBuild14.0inMicrosoft.Common.CurrentVersion.targets(4714,5): error MSB30...
    软件设计,数据库结构设计,设计思想
    面试题 SqlServer知识
    @Ajax.ActionLink跳转页面的问题解决方案 MVC Ajax不支持问题
    .net机试题总结
    .Net机试题——编写一个BS架构的多层表结构的信息管理模块
    C# 不同类型对象同名属性赋值
  • 原文地址:https://www.cnblogs.com/BlueSkyyj/p/8392628.html
Copyright © 2011-2022 走看看