From 81af13ea25d48cfe86d3d2d0655716f7422c0097 Mon Sep 17 00:00:00 2001 From: qicoffee Date: Fri, 13 Sep 2024 10:15:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=80=E6=9D=A1=E7=94=A8?= =?UTF-8?q?=E4=BE=8B=EF=BC=8C=E7=94=A8=E4=BA=8E=E6=A3=80=E6=9F=A5=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E6=A0=8F=E4=B8=AD=E6=97=B6=E9=97=B4=E6=97=A5=E6=9C=9F?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD=EF=BC=9B=E5=AF=B9=E8=BF=90=E8=A1=8C?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5=E7=94=A8=E4=BE=8B=E8=BF=9B=E8=A1=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- case/assert_res/test_dde_1271323_1.png | Bin 0 -> 2700 bytes case/assert_res/test_dde_1271323_2.png | Bin 0 -> 1408 bytes case/assert_res/test_dde_1271323_3.png | Bin 0 -> 1342 bytes case/test_dde_1271077.py | 6 ++-- case/test_dde_1271091.py | 2 +- case/test_dde_1271321.py | 32 +++++++++++++++++++++ method/assert_method.py | 8 +++--- method/dde_dock_method.py | 38 +++++++++++++++++++++++-- method/dde_editor_method.py | 6 +++- 9 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 case/assert_res/test_dde_1271323_1.png create mode 100644 case/assert_res/test_dde_1271323_2.png create mode 100644 case/assert_res/test_dde_1271323_3.png create mode 100644 case/test_dde_1271321.py diff --git a/case/assert_res/test_dde_1271323_1.png b/case/assert_res/test_dde_1271323_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5e27df4f9d0b373d4a9aad68ef253bea40016947 GIT binary patch literal 2700 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与实际值<{{actual}}>相等""" + """判断预期值<{{expect}>与实际值<{{actual}>相等""" if expect != actual: raise AssertionError(f"预期值<{expect}>与实际值<{actual}>不相等") @staticmethod def assert_not_equal(expect, actual): - """判断预期值<{{expect}}>与实际值<{{actual}}>不相等""" + """判断预期值<{{expect}>与实际值<{{actual}>不相等""" if expect == actual: raise AssertionError(f"预期值<{expect}>与实际值<{actual}>相等") @@ -66,13 +66,13 @@ class AssertMethod(Assert): @staticmethod def assert_true(expect): - """断言<{{expect}}>结果为真""" + """断言{{expect}}结果为真""" if not expect: raise AssertionError(f"<{expect}>不为真") @staticmethod def assert_false(expect): - """断言<{{expect}}>结果为假""" + """断言{{expect}}结果为假""" if expect: raise AssertionError(f"<{expect}>不为假") diff --git a/method/dde_dock_method.py b/method/dde_dock_method.py index dee32e0..b8040db 100644 --- a/method/dde_dock_method.py +++ b/method/dde_dock_method.py @@ -7,14 +7,46 @@ from method.base_method import BaseMethod class DdeDockMethod(BaseMethod): + def dde_dock_method_click_by_attr(self, path): + """在任务栏中通过元素点击""" + pylinuxauto.find_element_by_attr_path(f"/dde-dock/{path}").click() + + def dde_dock_method_right_click_by_attr(self, path): + """在任务栏中通过元素右键点击""" + pylinuxauto.find_element_by_attr_path(f"/dde-dock/{path}").right_click() + def dde_dock_method_click_dde_file_manager_by_attr(self): """在任务栏点击文件管理器""" - pylinuxauto.find_element_by_attr_path("/dde-dock/Btn_文件管理器").click() + self.dde_dock_method_click_by_attr("Btn_文件管理器") def dde_dock_method_click_launcher_btn_by_attr(self): """在任务栏点击启动器""" - pylinuxauto.find_element_by_attr_path("/dde-dock/Btn_launcheritem").click() + self.dde_dock_method_click_by_attr("Btn_launcheritem") def dde_dock_method_click_control_center_btn_by_attr(self): """在任务栏点击控制中心""" - pylinuxauto.find_element_by_attr_path("/dde-dock/Btn_控制中心").click() + self.dde_dock_method_click_by_attr("Btn_控制中心") + + def dde_dock_method_click_network_connection_icon_by_attr(self): + """在任务栏点击网络连接图标""" + self.dde_dock_method_click_by_attr("Btn_network-item-key") + + def dde_dock_method_click_network_connection_switch_btn_by_attr(self): + """在任务栏点击网络连接图标唤起的窗口中点击转换网络连接的按钮""" + self.dde_dock_method_click_by_attr("Btn_dswitchbutton") + + def dde_dock_method_right_click_network_connection_icon_by_attr(self): + """在任务栏中通过元素右键点击网络连接图标""" + self.dde_dock_method_right_click_by_attr("Btn_network-item-key") + + def dde_dock_method_right_click_datetime_icon_by_attr(self): + """在任务栏中通过元素右键点击右下角时间区域图标""" + self.dde_dock_method_right_click_by_attr("Btn_datetime") + + def dde_dock_method_click_datetime_icon_by_attr(self): + """在任务栏中通过元素点击右下角时间区域""" + self.dde_dock_method_click_by_attr("Btn_datetime") + + +if __name__ == "__main__": + DdeDockMethod().dde_dock_method_click_datetime_icon_by_attr() diff --git a/method/dde_editor_method.py b/method/dde_editor_method.py index 6d66d92..4dcf393 100644 --- a/method/dde_editor_method.py +++ b/method/dde_editor_method.py @@ -25,9 +25,13 @@ class DdeEditorMethod(BaseMethod): pylinuxauto.find_element_by_ocr("打开文件").click() def dde_editor_method_choose_save_as_option_by_ocr(self): - """在文本编辑器的菜单栏中选择 另存为 选项""" + """在文本编辑器的的菜单栏中选择 另存为 选项""" pylinuxauto.find_element_by_ocr("另存为").click() + def dde_editor_method_choose_save_option_by_ocr(self): + """在文本编辑器的的菜单栏中选择 保存 选项""" + pylinuxauto.find_element_by_ocr("保存").click() + def dde_editor_method_quit_editor_by_ocr(self): """通过菜单栏退出文本编辑器""" self.dde_editor_method_click_menu_btn_by_attr() -- Gitee