diff --git a/README.md b/README.md index 69f053399929f8823744e0f052d723006545fd25..709e51405e6260b8def1d985e4c8877c539ee68e 100644 --- a/README.md +++ b/README.md @@ -4,18 +4,23 @@ DDE Autotest for openEuler, based on [YouQu](https://youqu.uniontech.com/). **openEuler** 系统 **DDE** 桌面自动化测试。 -## 安装 +[![star](https://gitee.com/openeuler/dde_autotest_euler/badge/star.svg?theme=white)](https://gitee.com/openeuler/dde_autotest_euler/stargazers) +[![fork](https://gitee.com/openeuler/dde_autotest_euler/badge/fork.svg?theme=white)](https://gitee.com/openeuler/dde_autotest_euler/members) -1、安装 [欧拉](https://www.openeuler.org/zh/download/) **24.03 LTS** +## 安装系统 -2、通过以下步骤切换 DDE 桌面环境: +- 安装 [openEuler](https://www.openeuler.org/zh/download/) **24.03 LTS** -```bash -sudo yum install dde -y -sudo systemctl set-default graphical.target -sudo reboot -``` -3、修改分辨率为:1920 x 1080 +- 通过以下步骤切换 DDE 桌面环境: + + ```bash + sudo yum install dde -y + sudo systemctl set-default graphical.target + sudo reboot + ``` + + +![](./imgs/20241107142721.jpg) ## 环境部署 @@ -25,15 +30,26 @@ sudo reboot ```bash sudo pip3 install youqu - # 初始化工程 youqu-startproject dde - # 克隆用例仓库 cd dde/apps/ git clone https://gitee.com/openeuler/dde_autotest_euler.git ``` +```bash +dde/apps/ +├── dde_autotest_euler +│   ├── __init__.py +│   ├── case +│   ├── method +│   ├── config.py +│   ├── conftest.py +│   ├── dde.csv +│   ├── LICENSE +│   └── README.md +``` + **配置测试机的密码** 配置文件: @@ -65,13 +81,13 @@ python3 manage.py run ## 提交规范 -1、每次提交的 PR 只能包含一条提交。 +- 每次提交的 PR 只能包含一条提交。 -2、提交 PR 时要在标题中对提交的内容进行简单描述,要求清晰明了。 +- 提交 PR 时要在标题中对提交的内容进行简单描述,要求清晰明了。 -3、PR 的内容应当是有价值的,无关紧要的内容或非常简单的优化可以与其他内容一起提交。 +- PR 的内容应当是有价值的,无关紧要的内容或非常简单的优化可以与其他内容一起提交。 -4、提交的代码应当注重规范性,提交前要对代码的格式与内容进行检查。 +- 提交的代码应当注重规范性,提交前要对代码的格式与内容进行检查。 ## 常见问题 Q: OCR识别、图像识别服务器不可用? @@ -80,4 +96,8 @@ Q: OCR识别、图像识别服务器不可用? ## 用例列表 -[在线表格](https://doc.weixin.qq.com/sheet/e3_Ab8A1gYLABUA8lV99qfQWO7XU3Vhn?scode=AEoAsgdxAAYAl5RLlkAJgAbQaKAB8&tab=BB08J2) \ No newline at end of file +[在线表格](https://doc.weixin.qq.com/sheet/e3_Ab8A1gYLABUA8lV99qfQWO7XU3Vhn?scode=AEoAsgdxAAYAl5RLlkAJgAbQaKAB8&tab=BB08J2) + + + +[![Fork me on Gitee](https://gitee.com/openeuler/dde_autotest_euler/widgets/widget_2.svg)](https://gitee.com/openeuler/dde_autotest_euler) \ No newline at end of file diff --git a/case/test_dde_1270985.py b/case/test_dde_1270985.py index 9ab608b6fd13b95902167d3dafe3152d5f3e5fac..80384141639902f30c4d6e1b911e6091848df396 100644 --- a/case/test_dde_1270985.py +++ b/case/test_dde_1270985.py @@ -27,6 +27,6 @@ class TestDdeCase(BaseCase): DdeMethod().dde_control_center.click_by_attr("Btn_确定") sleep(2) DdeMethod().dde_control_center.delete_other_time_area_by_control_center() - DdeMethod().close_window() + except: DdeMethod().dde_control_center.kill_dde_control_center() diff --git a/case/test_dde_1270989.py b/case/test_dde_1270989.py index e913ec4b0633e62823c06abcb6523c3ba56f361d..8fd9ea3de4bb0bce2e0527bc89e439b17c08bdc3 100644 --- a/case/test_dde_1270989.py +++ b/case/test_dde_1270989.py @@ -1,9 +1,12 @@ from apps.dde_autotest_euler.case.base_case import BaseCase from apps.dde_autotest_euler.method.dde_method import DdeMethod from src import sleep +import pytest class TestDdeCase(BaseCase): + + @pytest.mark.timeout(100000) def test_dde_1270989(self): """控制中心中手动修改时间""" euler = DdeMethod() diff --git a/case/test_dde_1271009.py b/case/test_dde_1271009.py index c003df23c23e037ea3bbf7a93bd513058bbf94af..635d439f5ea9b26cc37338d56eed39ba5f22127a 100644 --- a/case/test_dde_1271009.py +++ b/case/test_dde_1271009.py @@ -15,4 +15,4 @@ class TestDdeCase(BaseCase): def teardown_method(self): """将分辨率重置,关闭控制中心窗口""" DdeMethod().reset_resolution_by_control_center() - DdeMethod().close_window() + diff --git a/case/test_dde_1271027.py b/case/test_dde_1271027.py index 93c89357176acf15d0b7c733193c293f602c2070..207b90595390981c575f738117f7e985bf2a7965 100644 --- a/case/test_dde_1271027.py +++ b/case/test_dde_1271027.py @@ -1,3 +1,5 @@ +import pytest + from apps.dde_autotest_euler.case.base_case import BaseCase from apps.dde_autotest_euler.method.dde_method import DdeMethod from src import sleep @@ -5,14 +7,15 @@ from src import CmdCtl as Cmd class TestDdeCase(BaseCase): + def test_dde_1271027(self): """控制中心中修改非当前用户密码""" DdeMethod().add_common_account_by_control_center() sleep(6) - a = Cmd.run_cmd("echo uostest12#$ | sudo -S grep '^test:' /etc/shadow") + a = Cmd.sudo_run_cmd("grep '^test:' /etc/shadow") DdeMethod().change_other_account_password_by_control() sleep(3) - b = Cmd.run_cmd("echo uostest12#$ | sudo -S grep '^test:' /etc/shadow") + b = Cmd.sudo_run_cmd("grep '^test:' /etc/shadow") self.assert_not_equal(a, b) def teardown_method(self): diff --git a/case/test_dde_1271031.py b/case/test_dde_1271031.py index 89c83437ce152ca8c58c858b62f2a471e0532884..4b3cf5a578760f8315eb3f0306073fa8b92cb783 100644 --- a/case/test_dde_1271031.py +++ b/case/test_dde_1271031.py @@ -3,6 +3,7 @@ from apps.dde_autotest_euler.method.dde_method import DdeMethod class TestDdeCase(BaseCase): + def test_dde_1271031_1(self): """删除普通账户(非当前登陆)""" euler = DdeMethod() diff --git a/case/test_dde_1271055.py b/case/test_dde_1271055.py index 3fbd75eda6182e7f7a078d868688b0404edb41d5..70db689092299b213bc0cb194432b730364b991b 100644 --- a/case/test_dde_1271055.py +++ b/case/test_dde_1271055.py @@ -9,49 +9,46 @@ from apps.dde_autotest_euler.method.dde_method import DdeMethod class TestDdeCase(BaseCase): - def test_dde_1271055_1(self, clear_process_1): + def test_dde_1271055_1(self): """启动器打开画板""" euler = DdeMethod() euler.open_software_by_launcher("huaban") sleep(5) self.assert_process_status(True, "deepin-draw") - def test_dde_1271055_2(self, clear_process_2): + def test_dde_1271055_2(self): """桌面打开画板""" euler = DdeMethod() euler.dde_dock.click_launcher_btn_by_attr() euler.dde_launcher.click_search_box_by_attr() Src.input("huaban") sleep(3) - euler.dde_dock.right_click_by_ocr("画板") + euler.dde_launcher.right_click_by_attr("画板") Src.select_menu(2) - sleep(2) - euler.deepin_draw.double_click_by_img("deepin_draw_icon.png") + sleep(1) + Src.esc() + euler.click_restore() + sleep(1) + euler.dde_dock.double_click_by_img("deepin_draw_icon.png") sleep(5) self.assert_process_status(True, "deepin-draw") - DdeMethod().deepin_draw.kill_process_by_cmd("deepin-draw") + DdeMethod().kill_process("deepin-draw") sleep(3) - euler.deepin_draw.right_click_by_img("deepin_draw_icon.png") + euler.dde_dock.right_click_by_img("deepin_draw_icon.png") Src.select_menu(1) sleep(5) self.assert_process_status(True, "deepin-draw") - def test_dde_1271055_3(self, clear_process_1): + def test_dde_1271055_3(self): """终端打开画板""" Cmd.run_cmd("deepin-draw &") - sleep(3) + sleep(5) self.assert_process_status(True, "deepin-draw") - @pytest.fixture - def clear_process_1(self): - """清理环境""" - yield - DdeMethod().deepin_draw.kill_process_by_cmd("deepin-draw") - - @pytest.fixture - def clear_process_2(self): - """清理环境""" + @pytest.fixture(autouse=True) + def clear(self): + DdeMethod().kill_process("deepin-draw") yield - DdeMethod().deepin_draw.kill_process_by_cmd("deepin-draw") - DdeMethod().deepin_draw.click_by_img("deepin_draw_icon.png") - Src.delete() + DdeMethod().kill_process("deepin-draw") + DdeMethod().click_restore() + DdeMethod().esc() diff --git a/case/test_dde_1271057.py b/case/test_dde_1271057.py index 61791f23fb42823303b9dfa2836636f46bf6b628..eb13876d2bc7100419c021dd059de09e3a858405 100644 --- a/case/test_dde_1271057.py +++ b/case/test_dde_1271057.py @@ -22,9 +22,10 @@ class TestDdeCase(BaseCase): sleep(1) euler.click_save_btn_in_pop_window() sleep(1) - DdeMethod().dde_dock.kill_process_by_cmd("deepin-draw") + DdeMethod().kill_process("deepin-draw") sleep(2) euler.open_software_by_launcher("wenjianguanliqi") + sleep(5) euler.dde_dock.click_by_ocr("主目录") euler.dde_dock.double_click_by_ocr("未命名") sleep(5) @@ -34,6 +35,6 @@ class TestDdeCase(BaseCase): def clear_file_in_home_and_kill_process(self): """清除测试文件,关闭进程""" yield - DdeMethod().dde_dock.kill_process_by_cmd("deepin-draw") - DdeMethod().dde_dock.kill_process_by_cmd("dde-file-manager") + DdeMethod().kill_process("deepin-draw") + DdeMethod().kill_process("dde-file-manager") Cmd.run_cmd("rm ~/未命名.ddf") diff --git a/case/test_dde_1271073.py b/case/test_dde_1271073.py index 9e5c0b9a2e8d6b8fccfed68cc5f6513f79896f25..0f77d90b5a061959e88087a01910f3f922cf0158 100644 --- a/case/test_dde_1271073.py +++ b/case/test_dde_1271073.py @@ -16,7 +16,7 @@ class TestDdeCase(BaseCase): euler.deepin_editor.click_menu_btn_by_attr() euler.deepin_editor.choose_open_file_option_by_ocr() sleep(3) - euler.deepin_editor.click_documents_in_pop_window_by_img() + euler.click_documents_in_pop_window_by_img() sleep(2) Src.ctrl_a() Src.enter() @@ -28,10 +28,13 @@ class TestDdeCase(BaseCase): def test_dde_1271073_2(self): """文本编辑器-关闭标签,打开文件进行修改后用ctrl+w关闭当前标签""" euler = DdeMethod() + euler.dde_dock.create_file_in_documents_by_cmd("test.txt") + euler.open_software_by_launcher("wenbenbianjiqi") + sleep(6) euler.deepin_editor.click_menu_btn_by_attr() euler.deepin_editor.choose_open_file_option_by_ocr() sleep(3) - euler.deepin_editor.click_documents_in_pop_window_by_img() + euler.click_documents_in_pop_window_by_img() sleep(2) Src.ctrl_a() Src.enter() @@ -45,10 +48,13 @@ class TestDdeCase(BaseCase): def test_dde_1271073_3(self): """文本编辑器-关闭标签,打开文件进行修改后右键关闭当前标签""" euler = DdeMethod() + euler.dde_dock.create_file_in_documents_by_cmd("test.txt") + euler.open_software_by_launcher("wenbenbianjiqi") + sleep(6) euler.deepin_editor.click_menu_btn_by_attr() euler.deepin_editor.choose_open_file_option_by_ocr() sleep(3) - euler.deepin_editor.click_documents_in_pop_window_by_img() + euler.click_documents_in_pop_window_by_img() sleep(2) Src.ctrl_a() Src.enter() @@ -59,13 +65,16 @@ class TestDdeCase(BaseCase): sleep(2) self.assert_element_not_exist("$/deepin-editor//test.txt") - def test_dde_1271073_4(self, clear_file_in_documents): + def test_dde_1271073_4(self): """文本编辑器-关闭标签,打开文件进行修改后点击标签右方关闭按钮关闭当前标签""" euler = DdeMethod() + euler.dde_dock.create_file_in_documents_by_cmd("test.txt") + euler.open_software_by_launcher("wenbenbianjiqi") + sleep(6) euler.deepin_editor.click_menu_btn_by_attr() euler.deepin_editor.choose_open_file_option_by_ocr() sleep(3) - euler.deepin_editor.click_documents_in_pop_window_by_img() + euler.click_documents_in_pop_window_by_img() sleep(2) Src.ctrl_a() Src.enter() @@ -76,10 +85,10 @@ class TestDdeCase(BaseCase): sleep(2) self.assert_element_not_exist("$/deepin-editor//test.txt") - @pytest.fixture + @pytest.fixture(autouse=True) def clear_file_in_documents(self): """清除测试文件并且关闭文本编辑器""" yield sleep(1) - DdeMethod().dde_dock.kill_process_by_cmd("deepin-editor") + DdeMethod().kill_process("deepin-editor") DdeMethod().dde_dock.delete_file_in_documents_by_cmd("test.txt") diff --git a/case/test_dde_1271075.py b/case/test_dde_1271075.py index 9f0d82f8f46a61c6d63334f821a52ad5319026b1..ae411daef878a5da81fec9321199a541d579f5fb 100644 --- a/case/test_dde_1271075.py +++ b/case/test_dde_1271075.py @@ -9,13 +9,13 @@ class TestDdeCase(BaseCase): def test_dde_1271075_1(self): """文本编辑器——另存为 非重复文件名""" euler = DdeMethod() - euler.create_file_in_documents_by_cmd("test.txt") + euler.dde_dock.create_file_in_documents_by_cmd("test.txt") euler.open_software_by_launcher("wenbenbianjiqi") sleep(6) euler.deepin_editor.click_menu_btn_by_attr() euler.deepin_editor.choose_open_file_option_by_ocr() sleep(3) - euler.deepin_editor.click_documents_in_pop_window_by_img() + euler.click_documents_in_pop_window_by_img() sleep(2) Src.ctrl_a() Src.enter() @@ -27,7 +27,7 @@ class TestDdeCase(BaseCase): euler.rename_file_in_pop_window_by_attr("new.txt") self.assert_file_exist("~/Documents/new.txt") - def test_dde_1271075_2(self, clear_file_in_documents): + def test_dde_1271075_2(self): """文本编辑器——另存为 重复文件名""" euler = DdeMethod() sleep(3) @@ -38,15 +38,18 @@ class TestDdeCase(BaseCase): euler.rename_file_same_name_in_pop_window_by_attr("new.txt") self.assert_image_exist_in_dde("test_dde_1271075.png") - @pytest.fixture + @pytest.fixture(autouse=True) def clear_file_in_documents(self): """清除测试文件并且关闭文本编辑器""" + DdeMethod().kill_process("dde-file-manager") + DdeMethod().kill_process("deepin-editor") yield sleep(1) - DdeMethod().close_window() + sleep(1) - DdeMethod().close_window() + sleep(1) - DdeMethod().kill_process_by_cmd("deepin-editor") - DdeMethod().delete_file_in_documents_by_cmd("new.txt") - DdeMethod().delete_file_in_documents_by_cmd("test.txt") + DdeMethod().kill_process("deepin-editor") + DdeMethod().kill_process("dde-file-manager") + DdeMethod().dde_dock.delete_file_in_documents_by_cmd("new.txt") + DdeMethod().dde_dock.delete_file_in_documents_by_cmd("test.txt") diff --git a/case/test_dde_1271077.py b/case/test_dde_1271077.py index 9d769e4a19623815f6edeb2709ba192ebdcd2b6b..66c78a79f2261eec76e378eae21d5317b114d4c0 100644 --- a/case/test_dde_1271077.py +++ b/case/test_dde_1271077.py @@ -8,29 +8,29 @@ class TestDdeCase(BaseCase): def test_dde_1271077(self): """在文本编辑器中删除文字内容""" euler = DdeMethod() - euler.create_file_in_documents_by_cmd("test.txt") + euler.dde_dock.create_file_in_documents_by_cmd("test.txt") euler.open_software_by_launcher("wenbenbianjiqi") sleep(6) euler.deepin_editor.click_menu_btn_by_attr() euler.deepin_editor.choose_open_file_option_by_ocr() sleep(3) - euler.deepin_editor.click_documents_in_pop_window_by_img() + euler.click_documents_in_pop_window_by_img() sleep(2) Src.ctrl_a() Src.enter() sleep(3) - euler.right_click_by_ocr("is") + euler.dde_dock.right_click_by_ocr("is") self.assert_ocr_not_exist("除") - euler.double_click_by_img("test_txt_details.png") - euler.right_click_by_ocr("is") + euler.dde_dock.double_click_by_img("test_txt_details.png") + euler.dde_dock.right_click_by_ocr("is") sleep(1) - euler.click_by_ocr("除") + euler.dde_dock.click_by_ocr("除") self.assert_image_not_exist_in_dde("test_dde_1271077.png") sleep(2) Src.ctrl_a() - euler.right_click_by_ocr("is") + euler.dde_dock.right_click_by_ocr("is") sleep(1) - euler.click_by_ocr("除") + euler.dde_dock.click_by_ocr("除") self.assert_ocr_not_exist("is") def teardown_method(self): @@ -39,4 +39,6 @@ class TestDdeCase(BaseCase): sleep(1) DdeMethod().deepin_editor.close_tab_by_attr("test.txt") DdeMethod().deepin_editor.quit_editor_by_ocr() - DdeMethod().delete_file_in_documents_by_cmd("test.txt") + DdeMethod().dde_dock.delete_file_in_documents_by_cmd("test.txt") + DdeMethod().kill_process("dde-file-manager") + DdeMethod().kill_process("deepin-editor") diff --git a/case/test_dde_1271089.py b/case/test_dde_1271089.py index 0a3906fc5b10751e6410de97afe07d38107532d5..f9dbfb41d0e51126f482bc600d9f44fe755f22df 100644 --- a/case/test_dde_1271089.py +++ b/case/test_dde_1271089.py @@ -1,3 +1,5 @@ +import pytest + from src import Src from apps.dde_autotest_euler.case.base_case import BaseCase from src import sleep @@ -24,3 +26,12 @@ class TestDdeCase(BaseCase): Src.alt_f4() sleep(3) self.assert_process_status(False, "deepin-editor") + + + @pytest.fixture(autouse=True) + def clear(self): + DdeMethod().kill_process("dde-file-manager") + DdeMethod().kill_process("deepin-editor") + yield + DdeMethod().kill_process("dde-file-manager") + DdeMethod().kill_process("deepin-editor") diff --git a/case/test_dde_1271091.py b/case/test_dde_1271091.py index 9d679fbcdc42523cdaa448eb70b68f54515312dd..96717810d9f8edf2368b7f0ced09f9f387a296f1 100644 --- a/case/test_dde_1271091.py +++ b/case/test_dde_1271091.py @@ -9,13 +9,13 @@ class TestDdeCase(BaseCase): def test_dde_1271091_1(self): """在文本编辑器中对修改内容进行保存""" euler = DdeMethod() - euler.create_file_in_documents_by_cmd("test.txt") + euler.dde_dock.create_file_in_documents_by_cmd("test.txt") euler.open_software_by_launcher("wenbenbianjiqi") sleep(6) euler.deepin_editor.click_menu_btn_by_attr() euler.deepin_editor.choose_open_file_option_by_ocr() sleep(3) - euler.deepin_editor.click_documents_in_pop_window_by_img() + euler.click_documents_in_pop_window_by_img() sleep(2) Src.ctrl_a() Src.enter() @@ -27,13 +27,13 @@ class TestDdeCase(BaseCase): def test_dde_1271091_2(self): """在文本编辑器中对修改内容进行保存""" euler = DdeMethod() - euler.create_file_in_documents_by_cmd("test.txt") + euler.dde_dock.create_file_in_documents_by_cmd("test.txt") euler.open_software_by_launcher("wenbenbianjiqi") sleep(6) euler.deepin_editor.click_menu_btn_by_attr() euler.deepin_editor.choose_open_file_option_by_ocr() sleep(3) - euler.deepin_editor.click_documents_in_pop_window_by_img() + euler.click_documents_in_pop_window_by_img() sleep(2) Src.ctrl_a() Src.enter() @@ -44,8 +44,12 @@ class TestDdeCase(BaseCase): @pytest.fixture(autouse=True) def clear_test_file(self): """删除测试文件,关闭文本编辑器窗口""" + DdeMethod().kill_process("dde-file-manager") + DdeMethod().kill_process("deepin-editor") yield DdeMethod().deepin_editor.close_tab_by_attr("test.txt") DdeMethod().deepin_editor.quit_editor_by_ocr() - DdeMethod().delete_file_in_documents_by_cmd("test.txt") + DdeMethod().dde_dock.delete_file_in_documents_by_cmd("test.txt") sleep(3) + DdeMethod().kill_process("dde-file-manager") + DdeMethod().kill_process("deepin-editor") diff --git a/case/test_dde_1271093.py b/case/test_dde_1271093.py index 23e6c5340cf2a8412733932f51dce3301f2b3805..fc1ed052e97673a0ea12dca0ae0f6a95bb5edde8 100644 --- a/case/test_dde_1271093.py +++ b/case/test_dde_1271093.py @@ -6,31 +6,31 @@ from apps.dde_autotest_euler.method.dde_method import DdeMethod class TestDdeCase(BaseCase): - def test_dde_1271093_1(self, clear_test_file_1): + def test_dde_1271093_1(self): """用文本编辑器打开txt文件""" euler = DdeMethod() - euler.create_file_in_documents_by_cmd("test1.txt") + euler.dde_dock.create_file_in_documents_by_cmd("test1.txt") euler.open_software_by_launcher("wenbenbianjiqi") sleep(6) euler.deepin_editor.click_menu_btn_by_attr() euler.deepin_editor.choose_open_file_option_by_ocr() sleep(3) - euler.deepin_editor.click_documents_in_pop_window_by_img() + euler.click_documents_in_pop_window_by_img() sleep(2) Src.ctrl_a() Src.enter() self.assert_ocr_exist("This is test message") - def test_dde_1271093_2(self, clear_test_file_2): + def test_dde_1271093_2(self): """用文本编辑器打开xml文件""" euler = DdeMethod() - euler.create_file_in_documents_by_cmd("test1.xml") + euler.dde_dock.create_file_in_documents_by_cmd("test1.xml") euler.open_software_by_launcher("wenbenbianjiqi") sleep(6) euler.deepin_editor.click_menu_btn_by_attr() euler.deepin_editor.choose_open_file_option_by_ocr() sleep(3) - euler.deepin_editor.click_documents_in_pop_window_by_img() + euler.click_documents_in_pop_window_by_img() sleep(2) Src.ctrl_a() Src.enter() @@ -39,37 +39,24 @@ class TestDdeCase(BaseCase): def test_dde_1271093_3(self, clear_test_file_3): """用文本编辑器打开json文件""" euler = DdeMethod() - euler.create_file_in_documents_by_cmd("test1.json") + euler.dde_dock.create_file_in_documents_by_cmd("test1.json") euler.open_software_by_launcher("wenbenbianjiqi") sleep(6) euler.deepin_editor.click_menu_btn_by_attr() euler.deepin_editor.choose_open_file_option_by_ocr() sleep(3) - euler.deepin_editor.click_documents_in_pop_window_by_img() + euler.click_documents_in_pop_window_by_img() sleep(2) Src.ctrl_a() Src.enter() self.assert_ocr_exist("This is test message") - @pytest.fixture() + @pytest.fixture(autouse=True) def clear_test_file_1(self): """删除测试文件,关闭文本编辑器窗口""" + DdeMethod().kill_process("dde-file-manager") + DdeMethod().kill_process("deepin-editor") yield - DdeMethod().delete_file_in_documents_by_cmd("test1.txt") - DdeMethod().close_window() - sleep(3) - - @pytest.fixture() - def clear_test_file_2(self): - """删除测试文件,关闭文本编辑器窗口""" - yield - DdeMethod().delete_file_in_documents_by_cmd("test1.xml") - DdeMethod().close_window() - sleep(3) - - @pytest.fixture() - def clear_test_file_3(self): - """删除测试文件,关闭文本编辑器窗口""" - yield - DdeMethod().delete_file_in_documents_by_cmd("test1.json") - DdeMethod().close_window() + DdeMethod().dde_dock.delete_file_in_documents_by_cmd("test1.txt") + DdeMethod().kill_process("dde-file-manager") + DdeMethod().kill_process("deepin-editor") diff --git a/case/test_dde_1271123.py b/case/test_dde_1271123.py index adb705cdb3d2de1c27e68cc2800c253a264d63fd..eefdc0126a9cd964a2989696095dd8afd17329f6 100644 --- a/case/test_dde_1271123.py +++ b/case/test_dde_1271123.py @@ -1,3 +1,5 @@ +import pytest + from src import Src from apps.dde_autotest_euler.case.base_case import BaseCase from apps.dde_autotest_euler.method.dde_method import DdeMethod @@ -15,9 +17,11 @@ class TestDdeCase(BaseCase): Src.enter() sleep(6) DdeMethod().browser.click_menu_icon_by_img() - self.assert_ocr_exist("退出") + self.assert_ocr_exist("同步") - def teardown_method(self): + @pytest.fixture(autouse=True) + def clear(self): """关闭Firefox浏览器""" - DdeMethod().browser.click_close_btn_by_attr() - sleep(2) + DdeMethod().kill_process("firefox") + yield + DdeMethod().kill_process("firefox") diff --git a/case/test_dde_1271135.py b/case/test_dde_1271135.py index 8348e678b66cae072e77e21cb385c24bb711db2a..bb531b379e97f86b88acb173ea9ed39cc9358aac 100644 --- a/case/test_dde_1271135.py +++ b/case/test_dde_1271135.py @@ -1,3 +1,5 @@ +import pytest + from apps.dde_autotest_euler.case.base_case import BaseCase from apps.dde_autotest_euler.method.dde_method import DdeMethod from src import sleep @@ -9,9 +11,12 @@ class TestDdeCase(BaseCase): """在浏览器中新打开网页,并且进入百度界面""" DdeMethod().open_software_by_launcher("Firefox") sleep(10) - DdeMethod().browser.right_click_by_ocr("开源社区") - sleep(3) - self.assert_image_exist_in_dde("test_dde_1271135_1.png") + res = DdeMethod().browser.ocr("开源社区", "恢复浏览状态") + for k, v in res.items(): + if v: + Src.right_click(*v) + break + sleep(2) DdeMethod().browser.click_by_attr("新建标签页") DdeMethod().browser.click_by_attr("使用 百度 搜索,或者输入网址") Src.input_message("www.baidu.com") @@ -19,6 +24,9 @@ class TestDdeCase(BaseCase): Src.enter() self.assert_image_exist_in_dde("test_dde_1271135_2.png") - def teardown_method(self): - """关闭浏览器""" - DdeMethod().browser.click_close_btn_by_attr() + @pytest.fixture(autouse=True) + def clear(self): + """关闭Firefox浏览器""" + DdeMethod().kill_process("firefox") + yield + DdeMethod().kill_process("firefox") diff --git a/case/test_dde_1271153.py b/case/test_dde_1271153.py index 26e86548452a7ce4f8cbafbf32f9abd6421330ff..0f78bb0598622a8b3fcdcc5bf9d6890386861ea6 100644 --- a/case/test_dde_1271153.py +++ b/case/test_dde_1271153.py @@ -1,7 +1,8 @@ +import pytest + from src import sleep from apps.dde_autotest_euler.case.base_case import BaseCase from apps.dde_autotest_euler.method.dde_method import DdeMethod -from src import Src class TestDdeCase(BaseCase): @@ -12,6 +13,10 @@ class TestDdeCase(BaseCase): sleep(2) self.assert_process_status(True, "deepin-compressor") - def teardown_method(self): - """""" - Src.alt_f4() + + @pytest.fixture(autouse=True) + def clear(self): + """关闭Firefox浏览器""" + DdeMethod().kill_process("deepin-compressor") + yield + DdeMethod().kill_process("deepin-compressor") diff --git a/case/test_dde_1271157.py b/case/test_dde_1271157.py index cc5d6a923a41f7667d8f046cae3c7dd45a973691..e26cccb27464975eef581ec7fdd7823092f7a2b6 100644 --- a/case/test_dde_1271157.py +++ b/case/test_dde_1271157.py @@ -1,6 +1,8 @@ -from src import sleep +import pytest + from apps.dde_autotest_euler.case.base_case import BaseCase from apps.dde_autotest_euler.method.dde_method import DdeMethod +from src import sleep class TestDdeCase(BaseCase): @@ -9,11 +11,13 @@ class TestDdeCase(BaseCase): euler = DdeMethod() euler.open_software_by_launcher("rizhishoujigongju") sleep(6) - euler.deepin_log_viewer.deepin_log_viewer_input_root_password() + euler.dde_polkit_agent.input_password() euler.export_all_log_by_attr() self.assert_image_exist_in_dde("test_dde_1271169") - def teardown_method(self): - """通过命令关闭日志收集工具""" - DdeMethod().dde_dock.kill_process_by_cmd("deepin-log-viewer") - DdeMethod().dde_dock.delete_all_file_in_documents_by_cmd() + @pytest.fixture(autouse=True) + def clear(self): + """关闭Firefox浏览器""" + DdeMethod().kill_process("deepin-log-viewer") + yield + DdeMethod().kill_process("deepin-log-viewer") diff --git a/case/test_dde_1271159.py b/case/test_dde_1271159.py index 83142f4b74ebb0726fb6e63a549bdeca3caa5775..6d27ba9a6720bdf8182c6563f1d8b34777d2af51 100644 --- a/case/test_dde_1271159.py +++ b/case/test_dde_1271159.py @@ -12,8 +12,9 @@ class TestDdeCase(BaseCase): euler.open_software_by_launcher("rizhishoujigongju") sleep(6) euler.dde_polkit_agent.click_by_attr("EditableText_passwordinput") - Src.input_message(conf.PASSWORD) - Src.enter() + euler.input_message("1") + sleep(3) + euler.enter() sleep(2) self.assert_image_exist_in_dde("test_dde_1271159_1") @@ -22,9 +23,9 @@ class TestDdeCase(BaseCase): euler = DdeMethod() euler.open_software_by_launcher("rizhishoujigongju") sleep(6) - euler.deepin_log_viewer.deepin_log_viewer_input_root_password() + euler.dde_polkit_agent.input_password() self.assert_ocr_exist("状态") def teardown_method(self): """通过命令关闭日志收集工具""" - DdeMethod().kill_process_by_cmd("deepin-log-viewer") + DdeMethod().kill_process("deepin-log-viewer") diff --git a/case/test_dde_1271169.py b/case/test_dde_1271169.py index ff61a24076ac0693334eedcc9824627851f3f982..8e9ef6851be99bba0dafb9b3d2fa66aace7e8fa7 100644 --- a/case/test_dde_1271169.py +++ b/case/test_dde_1271169.py @@ -14,5 +14,5 @@ class TestDdeCase(BaseCase): def teardown_method(self): """通过命令关闭日志收集工具""" - DdeMethod().dde_dock.kill_process_by_cmd("deepin-log-viewer") + DdeMethod().kill_process("deepin-log-viewer") DdeMethod().dde_dock.delete_all_file_in_documents_by_cmd() diff --git a/case/test_dde_1271175.py b/case/test_dde_1271175.py index e4c5ff65ff8fe44887e35117b8856623c2ca42e3..fe9da60a1061b746cac9c51fb34d87017059ff40 100644 --- a/case/test_dde_1271175.py +++ b/case/test_dde_1271175.py @@ -26,4 +26,4 @@ class TestDdeCase(BaseCase): def clear_file_in_home_and_kill_process(self): """关闭进程""" yield - DdeMethod().kill_process_by_cmd("deepin-system-monitor") + DdeMethod().kill_process("deepin-system-monitor") diff --git a/case/test_dde_1271199.py b/case/test_dde_1271199.py index 340be437c1eb5de9f02cf7957e6e5a7b32bdd1d5..6d0b9e149c7bf48b04b4ccba777c4f9c2031fa34 100644 --- a/case/test_dde_1271199.py +++ b/case/test_dde_1271199.py @@ -40,5 +40,5 @@ class TestDdeCase(BaseCase): def teardown_method(self): """通过命令关闭启动器""" - DdeMethod().dde_dock.kill_process_by_cmd("deepin-devicemanager") + DdeMethod().kill_process("deepin-devicemanager") sleep(3) diff --git a/case/test_dde_1271201.py b/case/test_dde_1271201.py index 7a3eb48fed53a4601aee9a3356ab7f32dfaeb473..8c88bd57db287602a9d64d8220c28c89aadbcbe5 100644 --- a/case/test_dde_1271201.py +++ b/case/test_dde_1271201.py @@ -15,7 +15,7 @@ class TestDdeCase(BaseCase): sleep(6) euler.deepin_editor.deepin_editor.click_menu_btn_by_attr() euler.deepin_editor.deepin_editor.choose_open_file_option_by_ocr() - euler.deepin_editor.click_documents_in_pop_window_by_img() + euler.click_documents_in_pop_window_by_img() Src.ctrl_a() Src.enter() sleep(2) @@ -23,7 +23,7 @@ class TestDdeCase(BaseCase): def teardown_method(self): """通过命令删除测试文件,关闭设备管理器以及文本编辑器器""" - DdeMethod().dde_dock.kill_process_by_cmd("deepin-devicemanager") - DdeMethod().dde_dock.kill_process_by_cmd("deepin-editor") + DdeMethod().kill_process("deepin-devicemanager") + DdeMethod().kill_process("deepin-editor") DdeMethod().dde_dock.delete_all_file_in_documents_by_cmd() sleep(3) diff --git a/case/test_dde_1271213.py b/case/test_dde_1271213.py index e5bfd3626237303f92fb8e7b1cdc05a0fa1481d4..e39f813f76952d01b5fdc653d808f83a2c4e705f 100644 --- a/case/test_dde_1271213.py +++ b/case/test_dde_1271213.py @@ -20,4 +20,4 @@ class TestDdeCase(BaseCase): def teardown_method(self): """关闭字体管理器""" - DdeMethod().dde_dock.kill_process("deepin-font-manager") + DdeMethod().kill_process("deepin-font-manager") diff --git a/case/test_dde_1271247.py b/case/test_dde_1271247.py index bdb93a4fe53e1fc454a76d5ca8ef36093d39484e..5ba39c42aa0eb70206a502a3660f50c303855840 100644 --- a/case/test_dde_1271247.py +++ b/case/test_dde_1271247.py @@ -8,7 +8,7 @@ class TestDdeCase(BaseCase): def test_dde_1271247(self): """终端关闭""" app_name = "deepin-terminal" - DdeMethod().dde_dock.kill_process_by_cmd(app_name) + DdeMethod().kill_process(app_name) Src.ctrl_alt_t() sleep(6) DdeMethod().deepin_terminal.click_option_by_attr() diff --git a/case/test_dde_1271297.py b/case/test_dde_1271297.py index 7faa98933647aa2b3490e1e6eaff7c60137084a4..3200703b0c76ddc74c88e52330301236688c857a 100644 --- a/case/test_dde_1271297.py +++ b/case/test_dde_1271297.py @@ -15,4 +15,4 @@ class TestDdeCase(BaseCase): def teardown_method(self): """关闭控制中心""" - DdeMethod().close_window() + diff --git a/case/test_dde_1271309.py b/case/test_dde_1271309.py index 4cd9c2ccaacf3fa5f734c167584db79728aa38f2..cf65250393923d05766318932b0ec2262d1b03af 100644 --- a/case/test_dde_1271309.py +++ b/case/test_dde_1271309.py @@ -12,7 +12,7 @@ class TestDdeCase(BaseCase): sleep(1) # 等待 1 秒,判断launcher是否启动 self.assert_image_exist_in_dde("test_dde_1271309.png") - DdeMethod().dde_dock.kill_process_by_cmd("dde-launcher") + DdeMethod().kill_process("dde-launcher") sleep(3) self.assert_image_not_exist_in_dde("test_dde_1271309.png") sleep(3) diff --git a/case/test_dde_1271313.py b/case/test_dde_1271313.py index 97a09c61e9283608c74d2b4c86158d8f2e1ba18e..26d598111a6e2e988e5a64cc48e3838d9aea8519 100644 --- a/case/test_dde_1271313.py +++ b/case/test_dde_1271313.py @@ -34,5 +34,5 @@ class TestDdeCase(BaseCase): def teardown_method(self): """通过命令关闭启动器""" - DdeMethod().dde_dock.kill_process_by_cmd("dde-launcher") + DdeMethod().kill_process("dde-launcher") sleep(3) diff --git a/case/test_dde_1271317.py b/case/test_dde_1271317.py index 8e1cfbcdf77f8dd261e19c75c4b0a3a3a259b46c..de45f874bd284ca94877d1c20efb0fd5fafdc112 100644 --- a/case/test_dde_1271317.py +++ b/case/test_dde_1271317.py @@ -31,5 +31,5 @@ class TestDdeCase(BaseCase): def teardown_method(self): """通过命令关闭启动器""" - DdeMethod().dde_dock.kill_process_by_cmd("dde-launcher") + DdeMethod().kill_process("dde-launcher") sleep(3) diff --git a/case/test_dde_1271319.py b/case/test_dde_1271319.py index 8df2e82f359e147d31d5e6c6443ef7c728321110..cfdd23fcc78b9b4b8645c1ab9d2ecbb27a1d1f47 100644 --- a/case/test_dde_1271319.py +++ b/case/test_dde_1271319.py @@ -42,5 +42,5 @@ class TestDdeCase(BaseCase): def teardown_method(self): """通过命令关闭启动器""" - DdeMethod().dde_dock.kill_process_by_cmd("dde-launcher") + DdeMethod().kill_process("dde-launcher") sleep(3) diff --git a/case/test_dde_1271321.py b/case/test_dde_1271321.py index ca222825f94f5c560da689be98bfad7d4b1c2722..005636865262e85b22f75394ebde8cb910e58498 100644 --- a/case/test_dde_1271321.py +++ b/case/test_dde_1271321.py @@ -13,7 +13,7 @@ class TestDdeCase(BaseCase): sleep(2) self.assert_ocr_exist("日历") sleep(1) - DdeMethod().dde_dock.kill_process("dde-calendar") + DdeMethod().kill_process("dde-calendar") sleep(1) euler.dde_dock.right_click_datetime_icon_by_attr() Src.select_menu(1) @@ -30,4 +30,4 @@ class TestDdeCase(BaseCase): def teardown_method(self): """通过命令关闭控制中心窗口""" - DdeMethod().dde_dock.kill_process("dde-calendar") + DdeMethod().kill_process("dde-calendar") diff --git a/case/test_dde_1271331.py b/case/test_dde_1271331.py index 59987744d82d4d6392649cf0239e23e66093c6cc..a816d3a57480806e3225653e2e4f14bdac436bda 100644 --- a/case/test_dde_1271331.py +++ b/case/test_dde_1271331.py @@ -19,5 +19,5 @@ class TestDdeCase(BaseCase): def teardown_method(self): """关闭窗口""" - DdeMethod().dde_dock.kill_process("deepin-terminal") + DdeMethod().kill_process("deepin-terminal") time.sleep(2) diff --git a/dde.csv b/dde.csv index 32f7d2050fa033a1919eac320c61aed99a7d6ac8..573a81ddc19ad77df63ed86614353ff17c4a76cf 100644 --- a/dde.csv +++ b/dde.csv @@ -5,10 +5,10 @@ 1271009,,, 1271011,,, 1271027,,, -1271031,,, -1271033,,, +1271031,skip-删除用户对系统影响太大,, +1271033,skip-删除用户对系统影响太大,, 1271035,,, -1271037,,, +1271037,skip-修改用户名密码对系统影响太大,, 1271041,,, 1271055,,, 1271057,,, @@ -44,3 +44,4 @@ 1271321,,, 1271327,,, 1271331,,, +1271175,,, diff --git a/imgs/20241107142721.jpg b/imgs/20241107142721.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2d1a80d3263a8948e340127842886dc9e1eae952 Binary files /dev/null and b/imgs/20241107142721.jpg differ diff --git a/method/base_method.py b/method/base_method.py index bf89e3594e1f33fb275456c5d97f1328556e1b05..8ef7c5fda0e5e9b583ccb73019480f2be3ad155d 100644 --- a/method/base_method.py +++ b/method/base_method.py @@ -32,11 +32,11 @@ class BaseMethod(Src): def click_by_ocr(self, text): """通过ocr识别点击""" - self.ocrx(text).click() + self.click(*self.ocr(text)) def double_click_by_ocr(self, text): """通过ocr识别双击""" - self.ocrx(text).double_click() + self.double_click(*self.ocr(text)) def click_by_img(self, img_name): """通过图像识别点击""" @@ -48,7 +48,7 @@ class BaseMethod(Src): def right_click_by_ocr(self, text): """通过ocr识别右键点击""" - self.ocrx(text).right_click() + self.right_click(*self.ocr(text)) def right_click_by_img(self, img_name): """通过图片识别右键点击""" @@ -67,10 +67,6 @@ class BaseMethod(Src): """通过给定名称在 文档 目录下删除所有文件""" self.run_cmd(f"rm ~/Documents/*") - def kill_process_by_cmd(self, process): - """通过命令关闭进程""" - self.run_cmd(f"killall {process}") - @classmethod def get_process_status(cls, app: str, grep_list: str = None) -> bool: """ diff --git a/method/dde_method.py b/method/dde_method.py index e30e2d1b8eb706d2c1bac4f959ef9c87675ee9e9..c7af39c4b4018d9ae50196a25471f00e061a5bde 100644 --- a/method/dde_method.py +++ b/method/dde_method.py @@ -95,13 +95,6 @@ class DdeMethod(Src): ShortCut.enter() sleep(2) - def close_window(self): - """关闭窗口""" - try: - self.dde_control_center.click_by_img("close_window_btn.png") - except custom_exception.TemplateElementNotFound: - self.dde_control_center.click_by_img(f"close_window_btn_1.png") - def delete_keyboard_layout_in_control_center(self): """在控制中心的键盘布局视图删除除选中之外的布局""" self.dde_control_center.click_edit_btn_in_keyboard_layout() @@ -182,7 +175,8 @@ class DdeMethod(Src): sleep(3) self.dde_control_center.click_by_attr("Btn_创建") sleep(1) - self.input_message(self.account_message) + from setting import conf + self.input_message(conf.PASSWORD) sleep(3) self.enter() sleep(5) @@ -243,7 +237,7 @@ class DdeMethod(Src): def change_resolution_by_control_center(self): """在控制中心中修改屏幕分辨率""" self.dde_control_center.enter_view_by_search_box("xianshi") - self.dde_control_center.click_by_attr("1920×1080") + self.dde_control_center.click_by_attr("1024×768 (推荐)") self.dde_control_center.click_by_attr("1280×800") sleep(1) self.dde_control_center.click_by_attr("Btn_保存") @@ -252,7 +246,7 @@ class DdeMethod(Src): def reset_resolution_by_control_center(self): """在控制中心中将修改的分辨率调回1920x1080""" self.dde_control_center.click_by_attr("1280×800") - self.dde_control_center.click_by_attr("1920×1080") + self.dde_control_center.click_by_attr("1024×768 (推荐)") sleep(1) self.dde_control_center.click_by_attr("Btn_保存") sleep(2) @@ -322,8 +316,8 @@ class DdeMethod(Src): def click_documents_in_pop_window_by_img(self): """在文本编辑器的文件管理器弹窗中点击左侧 文档 目录""" - self.click_by_ocr("系统盘") - self.deepin_editor.click_by_img("file_manager_left_view_documents.png") + self.dde_desktop.click_by_ocr("系统盘") + self.dde_desktop.click_by_img("file_manager_left_view_documents.png") def rename_file_in_pop_window_by_attr(self, filename): """在弹出的文件保存窗口中对文件进行重命名并且保存,文件名需要包含后缀名,且文件名不可与文档目录下其他文件重复""" @@ -374,7 +368,8 @@ class DdeMethod(Src): """导出所有的日志""" self.deepin_log_viewer.click_by_img("deepin_log_viewer_export_all_log_icon.png") sleep(2) - self.deepin_log_viewer.deepin_log_viewer_input_root_password() + from apps.dde_autotest_euler.method.vender.dde_polkit_agent_method import DdePolkitAgentMethod + DdePolkitAgentMethod().input_password() self.click_documents_in_pop_window_by_img() self.click_save_btn_in_pop_window() sleep(1) diff --git a/method/vender/dde_control_center_method.py b/method/vender/dde_control_center_method.py index 6e9d2445db633ea5fe95d7526e8fd3a174cfa847..d780bc53fba1c0656dd30a922df10ee31aabe170 100644 --- a/method/vender/dde_control_center_method.py +++ b/method/vender/dde_control_center_method.py @@ -83,3 +83,4 @@ class DdeControlCenterMethod(BaseMethod): def kill_dde_control_center(self): self.kill_process("dde-control-center") + self.esc() diff --git a/method/vender/dde_polkit_agent_method.py b/method/vender/dde_polkit_agent_method.py index d922cce8cc871c38ecafecd4caab83a0a1384ebc..fad033a0f0407ba23e7406d4742fef0e8310ac6e 100644 --- a/method/vender/dde_polkit_agent_method.py +++ b/method/vender/dde_polkit_agent_method.py @@ -1,4 +1,5 @@ from apps.dde_autotest_euler.method.base_method import BaseMethod +from src import sleep class DdePolkitAgentMethod(BaseMethod): @@ -9,3 +10,13 @@ class DdePolkitAgentMethod(BaseMethod): def click_by_attr(self, path): """在终端界面内点击右上角的【设置】按钮""" self.dog.element_click(path) + + def input_password(self): + """弹出鉴权窗口后输入管理员密码""" + sleep(2) + self.click_by_attr("EditableText_passwordinput") + from setting import conf + self.input_message(conf.PASSWORD) + sleep(3) + self.enter() + sleep(2) diff --git a/method/vender/deepin_editor_method.py b/method/vender/deepin_editor_method.py index 7398b863f4732696112927faf14c08efbf618994..825c922ebb7425de62d1c2b8a548f851b9c3b9ac 100644 --- a/method/vender/deepin_editor_method.py +++ b/method/vender/deepin_editor_method.py @@ -21,21 +21,21 @@ class DeepinEditorMethod(BaseMethod): def choose_open_file_option_by_ocr(self): """在文本编辑器的菜单栏中选择 打开文件 选项""" - self.ocrx("打开文件").click() + self.click(*self.ocr("打开文件")) def choose_save_as_option_by_ocr(self): """在文本编辑器的的菜单栏中选择 另存为 选项""" - self.ocrx("另存为").click() + self.click(*self.ocr("另存为")) def choose_save_option_by_ocr(self): """在文本编辑器的的菜单栏中选择 保存 选项""" - self.ocrx("保存").click() + self.click(*self.ocr("保存")) def quit_editor_by_ocr(self): """通过菜单栏退出文本编辑器""" self.click_menu_btn_by_attr() sleep(2) - self.ocrx("退出").click() + self.click(*self.ocr("退出")) def close_tab_by_attr(self, tab_name): """在文本编辑器中通过元素,通过右键关闭标签(适用于修改,不适用于新建的标签)""" diff --git a/method/vender/deepin_log_viewer_method.py b/method/vender/deepin_log_viewer_method.py index 2194bfdcbf53513714f9a0a9dcdc8979cf044140..282c3ec1f5fa5417be4eefd3b3f9718a3ed8cfad 100644 --- a/method/vender/deepin_log_viewer_method.py +++ b/method/vender/deepin_log_viewer_method.py @@ -18,11 +18,13 @@ class DeepinLogViewerMethod(BaseMethod): """在日志收集工具中通过元素点击导出按钮""" self.click_by_attr("导 出") - def deepin_log_viewer_input_root_password(self): - """在日志收集工具弹出鉴权窗口后输入管理员密码""" - sleep(2) - self.click_by_attr("EditableText_passwordinput") - self.input_message(BaseMethod.account_message) - sleep(3) - self.enter() - sleep(2) + # def deepin_log_viewer_input_root_password(self): + # """在日志收集工具弹出鉴权窗口后输入管理员密码""" + # sleep(2) + # from apps.dde_autotest_euler.method.vender.dde_polkit_agent_method import DdePolkitAgentMethod + # DdePolkitAgentMethod().click_by_attr("EditableText_passwordinput") + # from setting import conf + # self.input_message(conf.PASSWORD) + # sleep(3) + # self.enter() + # sleep(2)