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('') 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('') 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('') 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()

Python Appium 元素定位方法简单介绍的更多相关文章

  1. appium 元素定位方法汇总

    以上图为例,要定位到右下角的 我的 ,并点击 # appium的webdriver提供了11种元素定位方法,在selenium的基础上扩展了三个,可以在pycharm里面输入driver.find_e ...

  2. 6.1 python+appium元素定位方式(登录app)

    1.0.0     :常见的十种元素定位方式 .driver.find_element_by_id() #id定位 .driver.find_element_by_name() #name定位(已经凉 ...

  3. appium元素定位总结

    appium元素定位方法总结 使用uiautomator定位 driver.find_element_by_android_uiautomator(uia_string) 根据resourceId属性 ...

  4. [python爬虫] Selenium常见元素定位方法和操作的学习介绍(转载)

    转载地址:[python爬虫] Selenium常见元素定位方法和操作的学习介绍 一. 定位元素方法 官网地址:http://selenium-python.readthedocs.org/locat ...

  5. python+Appium自动化:各种元素定位方法

    name定位 driver.find_element_by_name('飞利浦净水').click() 测试结果报错:selenium.common.exceptions.InvalidSelecto ...

  6. Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法

    在appium自动化测试脚本运行的过程中,因为网络不稳定.测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待 ...

  7. Appium+python自动化-元素定位uiautomatorviewer的使用

    前言 环境搭建好了,下一步元素定位,元素定位本篇主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作. uiautomatorviewer是androi ...

  8. Python+Appium自动化测试(5)-appium元素定位常用方法

    对于Android而言,查找appUI界面元素属性的工具有三种:appium desktop,uiautomatorviewer.bat,weditor.之前已经介绍过了weditor的使用,这里我将 ...

  9. Appium学习笔记4_元素定位方法

    Appium之元素定位,如果对Android上如何使用工具获取页面元素有问题的,请转战到这:http://www.cnblogs.com/taoSir/p/4816382.html. 下面主要是针对自 ...

随机推荐

  1. TCP编程:系统出现 TIME_WAIT 原因及解决办法

    解决办法 打开 sysctl.conf 文件,修改以下几个参数: net.ipv4.tcp_tw_recycle = 1net.ipv4.tcp_tw_reuse = 1net.ipv4.tcp_ti ...

  2. Mysql 用命令行导出导入数据方法

    方法一: 导出参考:https://www.cnblogs.com/activiti/p/6700044.html 用mysqldump可以导出整个数据库里的表和数据,不单单是只导出某个表的数据 命令 ...

  3. 20145212 罗天晨 Web安全基础实践

    一.实验后回答问题 (1)SQL注入攻击原理,如何防御 原理:SQL注入攻击是攻击者在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,把SQL语句当做用户名等输入正常网页中以获取数据 ...

  4. OpenJudge cdqz/Data Structure Challenge 2 (Problem 5822) - 可持久化线段树

    描述 给一个空数列,有M次操作,每次操作是以下三种之一: (1)在数列后加一个数 (2)求数列中某位置的值 (3)撤销掉最后进行的若干次操作(1和3) 输入 第一行一个正整数M. 接下来M行,每行开头 ...

  5. 01MySQL的 库、表初步认识

    一.安装&完全卸载 1.引导式安装 https://dev.mysql.com/downloads/installer/ 2.下载压缩包,解压后用控制台安装 初始化 mysqld --init ...

  6. 浅谈Log4j2日志框架及使用

    目录 1.日志框架 2.为什么需要日志接口,直接使用具体的实现不就行了吗? 3.log4j2日志级别 4.log4j2配置文件的优先级 5.对于log4j2配置文件的理解 6.对于Appender的理 ...

  7. cmd使用管理员权限运行,启动路径不是当前目录

    https://stackoverflow.com/questions/672693/windows-batch-file-starting-directory-when-run-as-admin B ...

  8. JS控制显示/隐藏二级菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. P3244 [HNOI2015]落忆枫音

    思路 给出了一个DAG,要求以1为根的外向树的个数 如果没有加边的条件,就非常好做 每个点都只保留一条入边,最后得到的一定就是一个符合条件的树了(因为给了一个DAG啊) 所以答案是\(\prod_{i ...

  10. HIHOcoder1465 后缀自动机五·重复旋律8

    思路 后缀自动机求最长循环串 首先有一个常用的处理技巧,将串复制一遍,长度大于n的子串中就包含了一组循环子串 然后是后缀自动机如何处理最长公共子串的问题 维护两个变量,u和l,u代表当前位置的最长公共 ...