Coverage for kea/harmonyos_pdl_driver.py: 74%

42 statements  

« prev     ^ index     » next       coverage.py v7.6.9, created at 2024-12-22 16:05 +0800

1""" 

2This is the PDL (Property Desciption Language) for HarmonyOS, which is one 

3kind of DSL (Domain Sepcific Language). 

4Please checkout Kea's doc and its paper for the details. 

5""" 

6 

7from hmdriver2._client import HmClient 

8from hmdriver2.driver import Driver 

9from hmdriver2._uiobject import UiObject 

10from typing import TYPE_CHECKING, Type 

11if TYPE_CHECKING: 

12 pass 

13 

14from typing import Any, Union, TYPE_CHECKING 

15if TYPE_CHECKING: 

16 from kea.droidbot import DroidBot 

17 

18import time 

19 

20class HarmonyOS_PDL_Driver(Driver): 

21 

22 def __init__(self, delay=1, serial=None) -> None: 

23 self.delay = delay 

24 super().__init__(serial=serial) 

25 

26 def __new__(cls: Type[Any], serial: str) -> Any: 

27 return super().__new__(cls, serial) 

28 

29 def __call__(self, **kwargs: Any) -> "Ui": 

30 return Ui(self, **kwargs) 

31 

32 def set_droidbot(self, droidbot:"DroidBot"): 

33 self.droidbot = droidbot 

34 

35 def rotate(self, mode: str): 

36 self.droidbot.device.save_screenshot_for_report(event_name="rotate", event = self) 

37 super().set_orientation(mode) 

38 time.sleep(1) 

39 

40 def press(self, key: Union[int, str], meta=None): 

41 self.droidbot.device.save_screenshot_for_report(event_name="press", event = key) 

42 super().press(key, meta) 

43 

44 

45class Ui(UiObject): 

46 def __init__(self, session:"HarmonyOS_PDL_Driver", **kwargs) -> None: 

47 client = session._client 

48 droidbot = session.droidbot 

49 self.droidbot = droidbot 

50 super().__init__(client, **kwargs) 

51 

52 def click(self, offset=None): 

53 self.droidbot.device.save_screenshot_for_report(event_name="click", event = self) 

54 super().click() 

55 

56 def long_click(self, duration: float = 0.5): 

57 self.droidbot.device.save_screenshot_for_report(event_name="long_click", event = self) 

58 super().long_click() 

59 

60 def input_text(self, text): 

61 self.droidbot.device.save_screenshot_for_report(event_name="input_text " + text, event = self) 

62 super().input_text(text) 

63