为什么这个要单独拿出来说,因为我在很多群里面看见很多人不能区分这个!

因为之前的包有点问题,另外后续还会更换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的更多相关文章

  1. 学python走过的坑 二 element与elements的却别

    1.sel = driver.find_elements_by_xpath('//*[@id="nr"]')# 搜索结果显示条数2.sel = driver.find_elemen ...

  2. [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 ...

  3. EventTarge Node Docuement Element HTMLElement 关系

    综述: 可以将其看做是依次继承的关系: Node Node A Node is an interface from which a number of DOM types inherit, and a ...

  4. Python(五)模块

    本章内容: 模块介绍 time & datetime random os sys json & picle hashlib XML requests ConfigParser logg ...

  5. 做个简单的RSS订阅(ASP.NET Core),节省自己的时间

    0x01 前言 因为每天上下班路上,午休前,都是看看新闻,但是种类繁多,又要自己找感兴趣的,所以肯定会耗费不少时间. 虽说现在有很多软件也可以订阅一些自己喜欢的新闻,要安装到手机,还是挺麻烦的.所以就 ...

  6. JavaWeb之XML详解

    XML语言 什么是XML? XML是指可扩展标记语言(eXtensible Markup Language),它是一种标记语言,很类似HTML.它被设计的宗旨是传输数据,而非显示数据. XML标签没有 ...

  7. Jsoup系列学习(2)-解析html文件

    解析html文件 1.当我们通过发送http请求时,有时候返回结果是一个html格式字符串,你需要从一个网站获取和解析一个HTML文档,并查找其中的相关数据.你可以使用下面解决方法: 使用 Jsoup ...

  8. C# Webbrowser 常用方法及多线程调用

    设置控件的值 /// <summary> /// 根据ID,NAME双重判断并设置值 /// </summary> /// <param name="tagNa ...

  9. python模块(shelve,xml,configparser,hashlib,logging)

    1.1shelve模块 shelve 模块比pickle模块简单,只有一个open函数,返回类似字典对象,可读可写:key必须为字符串, 而值可以是python所支持的数据类型. shelve模块主要 ...

随机推荐

  1. 访问服务器,远程访问linux主机

    ssh conch@+ip地址,输入密码后就可以访问并使用服务器了.登录服务器之后,xbwang@xbwang-desktop:~$变成了conch@conchdev:~$ ,这样你就可以像使用普通电 ...

  2. Git如何从github上pull别人的项目

    1:使用git方式导入项目 菜单-File->import->Git->Projects from Git 2:选择某个服务器上的资源 3:选择需要pull的地址 后面需要自己加上 ...

  3. 【题解】洛谷P4391 [BOI2009] Radio Transmission(KMP)

    洛谷P4391:https://www.luogu.org/problemnew/show/P4391 思路 对于给定的字符串 运用KMP思想 设P[x]为前x个字符前缀和后缀相同的最长长度 则对于题 ...

  4. ARM Cortex-A53 Cache与内存的映射关系以及Cache的一致性分析

    ARM Cortex-A53 Cache与内存的映射关系以及Cache的一致性分析 题记:如果文章有理解不对的地方,欢迎大家批评指正,谢谢大家. 摘要:本文以Cortex-A53为例,首先分析Cach ...

  5. App 运行后屏幕顶部和底部各留黑边问题 - iOS

    App 启动后屏幕的顶部和底部各产生一条黑边,App 的内容会被压缩在两个黑条内显示,比例失调的情况. 初步判断是启动页资源图片适配问题. 首先,查看工程 project => General ...

  6. RCF的简单使用教程以及什么是回调函数

    RCF的使用教程 RCF(Remote Call Framework)是一个使用C++编写的RPC框架,在底层RCF支持多种传输实现方式(transport implementations). 包括T ...

  7. mongodb rebo 3T 执行出错 failed to execute script 但是执行成功 171条

    我现在也不清楚到底是什么原因 解决方法: 把你要执行的脚本保存到文件 在最上面添加下面两行代码:根据你的数据库 信息填写 conn = new Mongo('host:port'); db = con ...

  8. 树莓派3B+学习笔记:3、启用root账户

    1.打开终端,输入 sudo passwd root 输入两次密码后设置root账户密码: 2.输入 sudo passwd --unlock root 解锁root账户: 3.点击主菜单的“Shut ...

  9. STM32(12)——CAN

    简介: CAN是Controller Area Network,是 ISO 国际标准化的串行通信协议. CAN  控制器根据两根线上的电位差来判断总线电平.总线电平分为显性电平和隐性电平,二者必居其一 ...

  10. 20190112-自定义实现字符串的操作方法,如strip,upper,title,ljust,center,zfill,find,rfind等

    1:自定义实现strip()Python strip() 方法用于移除字符串头尾指定的字符(默认为空格或换行符)或字符序列算法:strip()仅移除首尾的指定字符,不能移除中间的先从首部开始移除 de ...