示例#1
0
 def test_snapshot(self):
     for name, method in ScreenProxy.SCREEN_METHODS.items():
         # 把所有的截图方法遍历一次,各截一次图片
         cap_method = method(self.dev.adb)
         screen_proxy = ScreenProxy(cap_method)
         img = screen_proxy.snapshot()
         self.assertIsInstance(img, ndarray)
         screen_proxy.teardown_stream()
示例#2
0
    def screen_proxy(self):
        """
        Similar to touch_proxy, it returns a proxy that can automatically initialize an available screenshot method, such as Minicap

        Afterwards, you only need to call ``self.screen_proxy.get_frame()`` to get the screenshot

        类似touch_proxy,返回一个代理,能够自动初始化一个可用的屏幕截图方法,例如Minicap

        后续只需要调用 ``self.screen_proxy.get_frame()``即可获取到屏幕截图

        Returns: ScreenProxy(Minicap())

        Examples:
            >>> dev = Android()
            >>> img = dev.screen_proxy.get_frame_from_stream()  # dev.minicap.get_frame_from_stream() is deprecated

        """
        if self._screen_proxy:
            return self._screen_proxy
        self._screen_proxy = ScreenProxy.auto_setup(
            self.adb,
            default_method=self._cap_method,
            rotation_watcher=self.rotation_watcher,
            display_id=self.display_id,
            ori_function=lambda: self.display_info)
        return self._screen_proxy
示例#3
0
    def screen_proxy(self, cap_method):
        """
        Specify a screenshot method, if the method fails to initialize, try to use other methods instead

        指定一个截图方法,如果该方法初始化失败,则尝试使用其他方法代替

        Args:
            cap_method: "MINICAP" or :py:mod:`airtest.core.android.cap_methods.minicap.Minicap` object

        Returns:
            ScreenProxy object

        Raises:
            ScreenError when the connection fails

        Examples:
            >>> dev = Android()
            >>> dev.screen_proxy = "MINICAP"

            >>> from airtest.core.android.cap_methods.minicap import Minicap
            >>> minicap = Minicap(dev.adb, rotation_watcher=dev.rotation_watcher)
            >>> dev.screen_proxy = minicap

        """
        if self._screen_proxy:
            self._screen_proxy.teardown_stream()
        self._screen_proxy = ScreenProxy.auto_setup(self.adb,
                                                    default_method=cap_method)
示例#4
0
    def test_setup(self):
        # 测试默认的初始化
        screen_proxy = ScreenProxy.auto_setup(self.dev.adb,
                                              rotation_watcher=self.dev.rotation_watcher,
                                              display_id=self.dev.display_id)
        self.assertIsNotNone(screen_proxy)
        screen_proxy.teardown_stream()

        # 测试指定默认类型初始化
        default_screen = ScreenProxy.auto_setup(self.dev.adb,
                                                default_method="MINICAP")
        self.assertEqual(default_screen.method_name, "MINICAP")
        default_screen.teardown_stream()

        minicap = Minicap(self.dev.adb)
        default_screen2 = ScreenProxy.auto_setup(self.dev.adb, default_method=minicap)
        self.assertEqual(default_screen2.method_name, "MINICAP")
示例#5
0
    def test_custom_cap_method(self):
        """
        Test adding a custom screenshot method
        测试添加一个自定义的截图方法

        Returns:

        """
        from airtest.core.android.cap_methods.base_cap import BaseCap

        class TestCap(BaseCap):
            def get_frame_from_stream(self):
                return b"frame"

        ScreenProxy.register_method("TESTCAP", TestCap)
        # 默认优先初始化为自定义的TestCap
        cap = ScreenProxy.auto_setup(self.dev.adb)
        self.assertIsInstance(cap.screen_method, TestCap)

        ScreenProxy.SCREEN_METHODS.pop("TESTCAP")