首页 > 其他分享 >APP自动化-多页列表滑动获取元素

APP自动化-多页列表滑动获取元素

时间:2023-05-11 11:13:27浏览次数:36  
标签:elements APP list1 ele locator 滑动 多页 page

在APP自动化过程中,遇到目录类的元素需要获取元素里的值,如果存在多页,需要滑动很多次,可以通过循环+源码变化来判断是否滑动到底

# wait.until(ec.visibility_of_element_located(locator)).click()   #点击目录
# 开始正序list
locator = (By.ID,"com.zhao.myreader:id/tv_chapter_title")
elements = wait.until(ec.visibility_of_all_elements_located(locator))   #获取目录元素组
# 第一种写法
# list1 = []
# for i in elements:
#     list1.append(i.text)

# 第二种写法
list1 = [i.text for i in elements]  # 列表推导式的写法

locator = (By.ID, "com.zhao.myreader:id/lv_chapter_list")
page_ele = wait.until(ec.visibility_of_element_located(locator))    # 获取目录列表元素块

print(page_ele.location)    # 返回位置信息    {'x': 0, 'y': 201}  X是水平的宽,y是垂直的坐标
print(page_ele.size)        # 返回元素的尺寸   {'height': 1719, 'width': 888}
# 得出滑动的两个位置信息
x = page_ele.location["x"] + 0.5 * page_ele.size["width"]   # x坐标+元素尺寸二分之一的宽度位置

y1 = page_ele.location["y"] + 0.3 * page_ele.size["height"] # Y坐标+元素尺寸三分之一的高度位置
y2 = page_ele.location["y"] + 0.6 * page_ele.size["height"] # Y坐标+元素尺寸三分之二的高度位置

# 只有两页数量少的做法
# action = TouchAction(driver)
# action.press(x=x, y=y2).move_to(x=x, y=y1).release().perform()

# 页码多的做法
while True:
    sourse = driver.page_source # 获取页面源码
    locator = (By.ID, "com.zhao.myreader:id/tv_chapter_title")
    elements = wait.until(ec.visibility_of_all_elements_located(locator))
    elements_text = [i.text for i in elements]

    # for i in elements_text: # 去重
    #     if i not in list1:
    #         list1.append(i)
    [list1.append(i) for i in elements_text if i not in list1]

    action = TouchAction(driver)
    action.press(x=x, y=y2).move_to(x=x, y=y1).release().perform()

    if sourse == driver.page_source:  # 当滑动后页面源码和滑动前的页面源码相同时,表示滑动到底,结束循环
        break
print(list1)
print(len(list1))

 

标签:elements,APP,list1,ele,locator,滑动,多页,page
From: https://www.cnblogs.com/gezirui/p/17390457.html

相关文章

  • uniapp跳转到一个原生的页面
    一、创建原生页面并配置1.创建原生页面Demo2.配置原生页面继承Activity二、在继承UniModule的类中写对应的页面跳转逻辑三、在uniapp中配置跳转的按钮四、将打包好的本地资源替换到项目中,打包运行1.本地资源打包2.替换掉AndroidStudio项目中的文件3.编译运行,点击进入小镜......
  • uniapp自定义开发一个文本输入框
    开发component中的一个input标签一、在原来的模块上面创建一个新的类TestComponent1.新建TestComponent2.配置json文件二、uniapp准备工作1.在uniapp中写一下刚刚创建的输入框2.打包导出资源3.资源替换复制刚刚生成的本地资源文件夹到AndroidStudio项目中......
  • 未配置appkey或配置错误,uniapp原生安卓插件开发
    开发安卓原生插件一、官方文档1.https://nativesupport.dcloud.net.cn/NativePlugin/course/android2.下载对应的SDK、工程文件二、生成uniapp的appkey1.配置配置好Androidstudio的环境:SDK、JDK2.导入项目3.HbuilderX中创建新的项目“plugin_demo”,同时当前创建项目的APP......
  • uniapp简单实现轮播图
    轮播图 <viewclass="price-content-style"> <viewclass="price-style"> ¥350.00 </view> <viewclass="content-style"> 【官方正品】全新Dior迪奥烈焰蓝金唇膏红色传奇新色丝绒992548 </view>......
  • app逆向之安卓native层安全逆向分析(七):unidbg自尝试某潮流app+dvmObject[]处理
    前言跟着龙哥搞了几次unidbg了,这次也自己尝试用来分析下某潮流app了。分析1.抓包先抓个包 我们要搞的就是这个sign-v1了。  2.调试找参数jadx一顿分析,一搜: 搜出来还不少,往下翻,找找一些特征,很快找到这里 点进去    ok,用objectionhook之后,发现不是......
  • mapper接口开发--条件,为什么是接口、参数
    三个必要条件_mapper.java和_mapper.xml需要在同一个目录这就是为什么看到resources有同样的包xml中的namespace为mapper.java的全限定路径mapper.xml的id和mapper.java的方法名字、参数类型、返回值一致最后通过sqlSession.getMapper(*mapper.class)得到接口,这样就可以......
  • 如何通过appuploader把ipa文件上传到App Store教程步骤​
    如何通过appuploader把ipa文件上传到AppStore教程步骤​iOSAPP上架AppStore其中一个步骤就是要把ipa文件上传到AppStore!​下面进行步骤介绍!​利用Appuploader这个软件,可以在Windows、Linux或Mac系统中申请ios和上传IPA到AppStoreConnect。​非常的方便,没有Mac也......
  • 滑动窗口 单调队列
    描述 给一个长度为N的数组,一个长为K的滑动窗体从最左端移至最右端,你只能看到窗口中的K个数,每次窗体向右移动一位,如下图:你的任务是找出窗体在各个位置时的最大值和最小值。  输入 第1行:两个整数N和K;第2行:N个整数,表示数组的N个元素(≤2×109 );对......
  • 时间管理APP开发功能
    时间管理APP开发功能包括以下几个方面:任务管理:APP应该具有任务管理功能,用户可以创建任务、添加任务、修改任务、删除任务等。时间设置:APP应该具有时间设置功能,用户可以设置任务的开始时间、结束时间、持续时间等。提醒功能:APP应该具有提醒功能,用户可以设置提醒时间、提醒......
  • DNA测序中的reads mapping方向的信息
    在DNA测序中,readsmapping方向指的是描绘short-reads(短序列)对于参考基因组的比对方向,即将短读序列与参考基因组进行比对时匹配的方向。这个方向信息通常被编码为“+”或“-”,其中“+”表示reads的5'端与正向链的3'端相对应,“-”表示reads的5'端与负向链的3'端相对应。具体来说,在......