6.2 element和elements
为什么这个要单独拿出来说,因为我在很多群里面看见很多人不能区分这个!
因为之前的包有点问题,另外后续还会更换app,因为部分app可能没有符合的案例场景,我需要找到那个场景给大家做个实例..便于大家跟着操作...
So 本章换个app,换一个一亿人都在用的app,安卓市场!!!!!!!
提醒:建议初学者跟着敲,边敲边理解! 实际上截止本章为止,和有无python基础关系不大,前几章的东西都是需要记的!
路径:直接复制
- Start['appPackage']='com.hiapk.marketpho' #包名
- Start['appActivity']='com.baidu.appsearch.LauncherActivity'
如图所示,改下这三个东西就好了!
然后,打开手机进入安卓市场!
首次打开会有一个权限弹窗(下章讲到)
这个脚本写好直接点击就可以了,,以往章节更新的内容可以完全可以操作这一步!
- from site_packages.appium import webdriver
- import time
- Start={}
- Start['platformName']='android' #设备型号 android或者ios
- Start['platformVersion']='7.1.2' #安卓设备版本号
- Start['deviceName']='2905bdb6' #安卓设备名称
- Start['app']=r'C:\Users\Administrator\Desktop\xuexi\apk\anzhuoshichang_16793302.apk' #设备路径 pc电脑存放apk包的路径
- #上面的路径不推荐这种写法,但是目前先这么写!后续告诉大家正确的写法
- Start['appPackage']='com.hiapk.marketpho' #包名
- Start['appActivity']='com.baidu.appsearch.LauncherActivity' #容器
- Start['noReset']='True' #是否重新安装app True不重新安装
- Start['unicodeKeyboard']='True' #是否禁用手机键盘 True禁用手机输入法
- Start['resetKeyboard']='True' #是否启动appium自带键盘 True开始手机输入法
- Start['automationName']='Uiautomator2' #可选模式 本教程默认 Uiautomator2
- Start['newCommandTimeout']='' #超时时间(s)
- driver = webdriver.Remote('http://localhost:4723/wd/hub', Start)
- driver.implicitly_wait(10) #隐式等待十秒
- time.sleep(3)
- #点击立即体验进入首页
- try:
- driver.find_element_by_id('com.hiapk.marketpho:id/iknow').click()
- except:
- pass
- time.sleep(3) #可能由于网速或者其他原因页面加载较慢,所以加个等待时间---等待三秒之后在执行下面的定位元素语句
注:完全没有python基础的给补充一点
try:
如果下面这句报错, 如果不报错则except里面的则不执行
except:
就执行excep下面的语句,注意缩进
放在这里的意思是,因为【立即开启*****】这个按钮只有第一次进入才有,后续进入就没有了,所以如果能点击这个就点击,不能点击就执行except,直接pass,
之前有提到很多中定位方式,这里建议试一下!
….
大家会发现首次打开APP的时候,大家会发现安装之后.有一个 权限读写的弹出层,这个东西怎么定位呢! 这个东西下章给更新细说!这章主要介绍 element和elments,这个允许按钮大家在这里手动点击一下直接进入下一个步骤!
点击立即开启 进入首页:
发现 如图标示的五个元素的id是一样的…比如我要定位第二个(排行上面的图片)这个时候怎么定位
如果用driver.find_element_by_id()定位会怎么样呢,上面的脚本加上这个执行
- a=driver.find_element_by_id('com.hiapk.marketpho:id/icon')
- print(a)
- a.click()
会发现打印的是第一个(<site_packages.appium.webdriver.webelement.WebElement (session="ba0c2ba5-9ca7-42bd-9bb2-45eecd5e1f8a", element="88939232-8c60-4ece-aae0-744895b9422d")>),切点击的也是第一个元素
那么用driver.find_elements_by_id()
- a=driver.find_elements_by_id('com.hiapk.marketpho:id/icon')
- print(a)
- a.click()
执行结果:
很明显报错了---这里涉及到python基础语法—--list取值!因为 elements取出来的是一个 list集合,list很显然是无法直接点击的!
语法:a=[1,2,3,4,5]
a[0]取出来的结果是1
a[1]取出来的结果是2 以此类推
所以修改脚本如下a[1]是取第二个…也就是说点击排行
- a=driver.find_elements_by_id('com.hiapk.marketpho:id/icon')
- print(a)
- a[1].click()
执行结果:达到预期
- Start['appPackage']='com.hiapk.marketpho' #包名
- Start['appActivity']='com.baidu.appsearch.LauncherActivit
6.2 element和elements的更多相关文章
- 学python走过的坑 二 element与elements的却别
1.sel = driver.find_elements_by_xpath('//*[@id="nr"]')# 搜索结果显示条数2.sel = driver.find_elemen ...
- [Swift]LeetCode703. 数据流中的第K大元素 | Kth Largest Element in a Stream
Design a class to find the kth largest element in a stream. Note that it is the kth largest element ...
- EventTarge Node Docuement Element HTMLElement 关系
综述: 可以将其看做是依次继承的关系: Node Node A Node is an interface from which a number of DOM types inherit, and a ...
- Python(五)模块
本章内容: 模块介绍 time & datetime random os sys json & picle hashlib XML requests ConfigParser logg ...
- 做个简单的RSS订阅(ASP.NET Core),节省自己的时间
0x01 前言 因为每天上下班路上,午休前,都是看看新闻,但是种类繁多,又要自己找感兴趣的,所以肯定会耗费不少时间. 虽说现在有很多软件也可以订阅一些自己喜欢的新闻,要安装到手机,还是挺麻烦的.所以就 ...
- JavaWeb之XML详解
XML语言 什么是XML? XML是指可扩展标记语言(eXtensible Markup Language),它是一种标记语言,很类似HTML.它被设计的宗旨是传输数据,而非显示数据. XML标签没有 ...
- Jsoup系列学习(2)-解析html文件
解析html文件 1.当我们通过发送http请求时,有时候返回结果是一个html格式字符串,你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据.你可以使用下面解决方法: 使用 Jsoup ...
- C# Webbrowser 常用方法及多线程调用
设置控件的值 /// <summary> /// 根据ID,NAME双重判断并设置值 /// </summary> /// <param name="tagNa ...
- python模块(shelve,xml,configparser,hashlib,logging)
1.1shelve模块 shelve 模块比pickle模块简单,只有一个open函数,返回类似字典对象,可读可写:key必须为字符串, 而值可以是python所支持的数据类型. shelve模块主要 ...
随机推荐
- 说说DBA职责和目标
数据库管理员(Database Administrator,简称DBA),是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,他属于运维工程师的一个分支,主要负责业务数据库从设计.测试到部 ...
- JSON数据转换之net.sf.json包的使用
转载 解析json之net.sf.json https://blog.csdn.net/itlwc/article/details/38442667 一.介绍 使用之前需要导入的jar包: json- ...
- P2213 [USACO14MAR]懒惰的牛The Lazy Cow_Sliver
P2213 [USACO14MAR]懒惰的牛The Lazy Cow_Sliver 最大化一个子矩阵的和. 我们如何去做,dp和贪心呀! 大体题意:给定一个正方形,然后在正方形中求出一个大小已经给定的 ...
- 自学安卓练习作品单词APP(1)-安卓的hello word与有道字典防爬虫破解
1.前言 闲来无聊.手机每天又是都接触的东西.程序什么的最容易接触到.想到有些人说前后端都做就是全栈的说法.哦,你看html5全栈. 要我说多接触一些多有意思.天天写后端.还不是业务层.又不是什么高大 ...
- iOS之iOS中的(null)、<null>、 nil 的问题
摘要: 你有没有过这样的经历,就是界面上显示出类似<null>.(null)这样一些东西,有时候还会莫名其妙的闪退.反反复复真是曰了犬,今天来总结一下这个问题的解决方法 前段时间开发过 ...
- 如何编写及运行JS
JS也是一种脚本语言,他可以有两种方式在HTML页面进行引入,一种是外联,一种是内部. 外联JS的写法为: <script src="相对路径"></ ...
- 『ACM C++』 PTA 天梯赛练习集L1 | 034-035
在一个团队里,一群人一起为一件事情努力奋斗的过程,真的很值得享受,真希望我能拥有很多这样的团队. ------------------------------------------------L1- ...
- CodeChef March Lunchtime 2018 div2
地址https://www.codechef.com/LTIME58B?order=desc&sortBy=successful_submissions 简单做了一下,前三题比较水,第四题应该 ...
- JSP/Servlet开发——第十章 Ajax与JQuery
1. 认识Ajax: ◆在传统的 Web 应用中,每次请求服务器都会生成新的页面,用户在提交请求后,总是要等待服务器的响应,如果前一个请求没有得到响应,则后一个请求就不能发送. ◆由于这是一种独占式的 ...
- JavaScript脚本加载相关知识
<script>标签的位置 HTML4规范允许<script>可以放在<head>或<body>中. 但是,放在<head>中会导致性能问题 ...