工具使用:

1、android-sdk的自带工具---uiautomator工具

2、使用find_element_by_id寻找元素位置

 from appium import webdriver;
from appium import version;
#from selenium import webdriver;
import time;
#目前最新更新 #from appium import webDriver
#,
pack_info={
'platformName':'android',
'deviceName':'215a343c0804',
'platformVersion':'7.1.2',
'appPackage':'包名',
'appActivity':'启动Activity' } drive=webdriver.Remote('http://127.0.0.1:4723/wd/hub',pack_info); #drive=webdriver.Remote('http://127.0.0.1:4723/wd/hub',pack_info); # #休眠5s
time.sleep();
#点击对应的元素
drive.find_element_by_id('包名:id/iv_download_img').click()----加这一句就行
print('执行成功')

产生了一个问题:

①、运行后,appium可以正常运行,并开启APP,但是无法进行点击事件,事实上,并没有任何报错,纳闷中

 解决方式尝试1:开发者模式中,打开允许模拟点击,完美解决

2、扩展-使用其他的定位元素的办法

①、在uiautomator中获取元素id(常用):.find_element_by_id('包名:id/iv_download_img').click()---->在uiautomator中的resource-id中直接复制即可

②、使用使用xpath获取元素:

1)如果页面中text是唯一的,那么就通过text文本获取(格式://*[@text='掃一掃',必须要有斜杠和一个※号)(很少用):find_element_by_xpath("//*[@text='掃一掃']").click();------->根据tex寻找,也是在uiautomator中的元素text中直接复制即可

2)同上,也可以用uiautomator中的content-desc文本获取,正常情况下,它的内容和text是一样的,很多时候,它是空的,用法也是和text一样find_element_by_xpath("//*[@content-desc='掃一掃']").click();

2)如果页面中class是唯一的,那么就通过class获取(格式://classname,必须要有两个斜杠)(很少用):drive.find_element_by_xpath('//android.widget.TextView').click();----->这个运行无结果,无报错,因为页面中这个class不是唯一的,所以不知道应该要取哪一个。

3)contains模糊匹配(类似模糊匹配,这个通常用于要定位一组的元素,而不是单个元素时,效率尤其突出)

4)层级定位--父定子位(很有用)

参考

https://www.cnblogs.com/syw20170419/p/8192629.html

appium---第二个脚本,定位页面元素的更多相关文章

  1. 关于appium操作真机打开app之后无法定位页面元素的问题的解决办法

    appium操作真机打开app后无法定位页面元素:例如微信或者支付宝支付时,手机的安全控件会对支付环境进行保护,会断掉当前appium与真机的链接,导致连接失败,无法定位到页面元素,在做ui自动化之前 ...

  2. 定位页面元素之xpath详解以及定位不到测试元素的常见问题

    一.定位元素的方法 id:首选的识别属性,W3C标准推荐为页面每一个元素设置一个独一无二的ID属性, 如果没有且很难找到唯一属性,解决方法:(1)找开发把id或者name加上.如果不行,解决思路可以是 ...

  3. 使用CSS选择器定位页面元素

    摘录:http://blog.csdn.net/defectfinder/article/details/51734690 CSS选择器也是一个非常好用的定位元素的方法,甚至比Xpath强大.在自动化 ...

  4. selenium第三课(selenium八种定位页面元素方法)

    selenium webdriver进行元素定位时,通过seleniumAPI官方介绍,获取页面元素的方式一共有以下八种方式,现按照常用→不常用的顺序分别介绍一下. 官方api地址:https://s ...

  5. selenium定位页面元素的一件趣事

    PS:本博客selenium分类不会记载selenium打开浏览器,定位元素,操作页面元素,切换到iframe,处理alter.confirm和prompt对话框这些在网上随处可见的信息:本博客此分类 ...

  6. Selenium 定位页面元素 以及总结页面常见的元素 以及总结用户常见的操作

    1. Selenium常见的定位页面元素 2.页面常见的元素 3. 用户常见的操作 1. Selenium常见的定位页面元素 driver.findElement(By.id());driver.fi ...

  7. webdriver定位页面元素时使用set_page_load_time()和JavaScript停止页面加载

    webdriver定位页面元素时使用set_page_load_time()和JavaScript停止页面加载 原文:https://my.oschina.net/u/2344787/blog/400 ...

  8. selenium webdriver学习(四)------------定位页面元素(转)

    selenium webdriver学习(四)------------定位页面元素 博客分类: Selenium-webdriver seleniumwebdriver定位页面元素findElemen ...

  9. Python+Selenium自动化-定位页面元素的八种方法

    Python+Selenium自动化-定位页面元素的八种方法   本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子. 0.元素定位方法主要有: id定位:find_elemen ...

  10. By.Xpath快速定位页面元素常用方法

    先看一看xpath的语法 我们将在下面的例子中使用这个 XML 文档. <?xml version="1.0" encoding="ISO-8859-1" ...

随机推荐

  1. Css样式压缩、美化、净化工具 源代码

    主要功能如下: /* 美化:格式化代码,使之容易阅读 */ /* 净化:将代码单行化,并去除注释 */ /* 压缩:将代码最小化,加快加载速度 */ /* 以下是演示代码 */ /*reset beg ...

  2. linux无法启动httpd服务问题

    httpd 服务启动报错,可能出现的问题比较多,通过查看日志看是什么报错 (tail  200f /etc/httpd/logs/error_log) 1.查看防火墙是不是关闭状态 2.查看80端口是 ...

  3. 6)django-示例(fbv)

    FBV(function base view),即一个url对应views.py一个函数 示例演示如下 1)FBV如何使用 2)渲染页面,并返回字典数据 3)字典数据页面如何访问 1)url.py f ...

  4. DML_DDL_触发器

    Oracle触发器1-介绍Oracle官方参考:PL/SQL Language Referenc->9 PL/SQL TriggerReasons to Use Trigger:■ Automa ...

  5. js-循环中判断两次点击是否是同一元素

    $(elm).click(function(){ if($(this).attr('num')){ console.log("同一个元素") }else{ for(let i=0; ...

  6. linux命令知识点

    1. 例二:列出当前目录中所有以“t”开头的目录的详细内容,可以使用如下命令: 命令:ls -l t* 例六:计算当前目录下的文件数和目录数 命令: ls -l * |grep "^-&qu ...

  7. 《精通Oracle SQL(第2版)》PDF

    一:下载途径 二:图书图样 三:目录 第1章 SQL核心 1.1 SQL语言 1.2 数据库的接口 1.3 SQL*Plus回顾 1.3.1 连接到数据库 1.3.2 配置SQL*Plus环境 1.3 ...

  8. 20165314 2016-2017-2 《Java程序设计》第8周学习总结

    20165314 2016-2017-2 <Java程序设计>第8周学习总结 教材学习内容总结 java中的线程 线程的常用方法 GUI线程 多线程的概念 代码托管

  9. Python变量的作用域

    局部变量 局部变量是指在函数内部定义并使用的变量,他只在函数内部有效.即函数内部的名字只在函数运行时才会创建,在函数运行之前或者运行完毕之后,所有的名字就都不存在了.所以,如果在函数外部使用函数内部定 ...

  10. MySQL架构及SQL语句

    MySQL基础: 单进程多线程: 用户连接:连接线程 官方组件架构: MySQL的数据文件类型: 数据文件.索引文件 重做日志.撤销日志.二进制日志.错误日志.查询日志.慢查询日志.中继日志 MySQ ...