从模拟器获取第一张截图(core\Screenshot.py)
python
class Screenshot:
def __init__(self, method, connection):
self.connection = connection
self.screenshot_instance = None
self.init_screenshot_instance(method)
def screenshot(self):
image = self.screenshot_instance.screenshot()
return image
def init_screenshot_instance(self, method):
if method == "nemu":
self.screenshot_instance = NemuScreenshot(self.connection)
elif method == "adb":
self.screenshot_instance = AdbScreenshot(self.connection)
elif method == "uiautomator2":
self.screenshot_instance = U2Screenshot(self.connection)
elif method == "scrcpy":
self.screenshot_instance = ScrcpyScreenshot(self.connection)这个类是BAAS源码中的Screenshot类的简化版本
初始化它需要两个参数:
method截图方式
目前可选的截图方式以及其优劣
| 方式 | 速度/ms | 无损截图 |
|---|---|---|
| nemu | 5-20 | 是 |
| adb | 300 | 是 |
| uiautomator2 | 300 | 是 |
| scrcpy | 17 | 否 |
类似C++多态, init_screenshot_instance 根据 method 初始化 screenshot_instance 为对应的截图类, 使得 screenshot 函数可以直接调用对应截图类的 screenshot 函数
2. connection
这是另一个类(Connection)的实例,它告诉了类该从哪个模拟器截图 简述: Screenshot 类集成了多种截图方式 每一种截图方式的具体实现:
