当前位置: 首页 > news >正文

appium控制手机一直从下往上滑动

用于使用Appium和Selenium WebDriver在Android设备上滚动设置应用程序的界面。具体来说,它通过WebDriverWait和expected_conditions等待元素出现,然后使用ActionChains移动到该元素并执行滚动动作。在setUp中,它初始化了Appium的WebDriver和capabilities,而在tearDown中,它关闭了WebDriver连接。该测试用例会无限循环执行滚动操作,直到出现异常才停止。

import unittest
from time import sleep
from appium import webdriver
from appium.options.android import UiAutomator2Options
from appium.webdriver.common.appiumby import AppiumBy
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.action_chains import ActionChainsclass TestScrollSettings(unittest.TestCase):"""测试滚动设置的类。该类包含了在Android设备上通过Appium测试框架对设置应用进行滚动测试的方法。"""def setUp(self):"""测试前的准备工作。初始化Appium驱动,设置Android设备的自动化测试选项,包括平台名称、自动化工具名称、设备名称、应用包名、应用活动、语言和地区等。"""options = UiAutomator2Options()capabilities = dict(platformName='Android',automationName='uiautomator2',deviceName='Android',appPackage='com.android.settings',appActivity='.Settings',language='en',locale='US')for key, value in capabilities.items():options.set_capability(key, value)self.driver = webdriver.Remote('http://localhost:4723', options=options)def tearDown(self):"""测试结束后的清理工作。关闭Appium驱动。"""self.driver.quit()def test_scroll_settings(self):"""测试滚动设置的功能。通过WebDriverWait和ActionChains不断尝试滚动设置界面向前,直到出现异常或达到预期结果。"""wait = WebDriverWait(self.driver, 10)actions = ActionChains(self.driver)while True:try:# 使用Expected Condition等待元素出现,然后执行滚动动作element = wait.until(EC.presence_of_element_located((AppiumBy.ANDROID_UIAUTOMATOR, 'new UiScrollable(new UiSelector().scrollable(true)).scrollForward()')))actions.move_to_element(element).perform()sleep(5)  # 暂停5秒,以便观察滚动效果except Exception as e:print(e)breakif __name__ == '__main__':suite = unittest.TestLoader().loadTestsFromTestCase(TestScrollSettings)unittest.TextTestRunner(verbosity=2).run(suite)
http://www.lryc.cn/news/338886.html

相关文章:

  • 为什么光伏探勘测绘需要无人机?
  • day10 | 栈与队列 part-2 (Go) | 20 有效的括号、1047 删除字符串中的所有相邻重复项、150 逆波兰表达式求值
  • 深入解析Tomcat的工作流程
  • 【web网页制作】html+css旅游家乡山西主题网页制作(3页面)【附源码】
  • 系统参数指标:QPS、TPS、PV、UV等
  • 一入鸿蒙深似海,从此Spring是路人:鸿蒙开发面试题
  • 【Python】使用OPC UA创建数据服务器
  • JavaScript(六)-高级篇
  • 速盾:游戏cdn什么意思
  • 数据库-Redis(11)
  • 【网安小白成长之路】6.pikachu、sql-labs、upload-labs靶场搭建
  • (七)C++自制植物大战僵尸游戏关卡数据加载代码讲解
  • wpf下RTSP|RTMP播放器两种渲染模式实现
  • Element-UI 自定义-下拉框选择年份
  • 二叉树的链式存储
  • [计算机效率] 鼠标手势工具:WGestures(解放键盘的超级效率工具)
  • Linux useradd命令教程:如何创建新的用户账户(附实例详解和注意事项)
  • 基于ollama搭建本地chatGPT
  • C++11 数据结构3 线性表的循环链式存储,实现,测试
  • 初识DOM
  • 计算机视觉实验五——图像分割
  • 移动Web学习06-移动端适配Less预处理器项目案例
  • LangChain-25 ReAct 让大模型自己思考和决策下一步 AutoGPT实现途径、AGI重要里程碑
  • 24/04/15总结
  • vue3、vue2中nextTick源码解析
  • 【氮化镓】GaN HEMTs结温和热阻测试方法
  • c++11 标准模板(STL)本地化库 - 平面类别(std::codecvt) - 在字符编码间转换,包括 UTF-8、UTF-16、UTF-32 (四)
  • 【状态压缩 容斥原理 组合数学】100267. 单面值组合的第 K 小金额
  • .net框架和c#程序设计第三次测试
  • 架构师系列-搜索引擎ElasticSearch(五)- 索引设计