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

发布于:2024-04-20 ⋅ 阅读:(19) ⋅ 点赞:(0)

用于使用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 ActionChains

class 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)
                break

if __name__ == '__main__':
    suite = unittest.TestLoader().loadTestsFromTestCase(TestScrollSettings)
    unittest.TextTestRunner(verbosity=2).run(suite)