diff --git a/case/assert_res/test_dde_1271281_1.png b/case/assert_res/test_dde_1271281_1.png new file mode 100755 index 0000000000000000000000000000000000000000..5565bbb7ccd7a89d3d69dddf762fd9ecb6464cbe Binary files /dev/null and b/case/assert_res/test_dde_1271281_1.png differ diff --git a/case/test_dde_1271281.py b/case/test_dde_1271281.py new file mode 100644 index 0000000000000000000000000000000000000000..262ea84c5d9c98476d8d7a57afe4598de03d8d41 --- /dev/null +++ b/case/test_dde_1271281.py @@ -0,0 +1,131 @@ +import pytest +from src import sleep +from src import Src +from src import CmdCtl as Cmd +from apps.dde_autotest_euler.case.base_case import BaseCase +from apps.dde_autotest_euler.method.dde_method import DdeMethod + + +class TestDdeFileManagerCase(BaseCase): + + @pytest.fixture(scope="function", autouse=False) + def setup_teardown_1271281(self): + """前置和后置""" + DdeMethod().dde_dock.click_dde_file_manager_by_attr() + sleep(3) + yield + Cmd.run_cmd("rm -rf ~/Documents/*") + Cmd.run_cmd("rm -rf /home/uos/.local/share/Trash/files/*") + Src.kill_process("dde-file-manage") + + @pytest.fixture(scope="function", autouse=False) + def setup_teardown_1271281_5(self): + """前置和后置""" + yield + Cmd.run_cmd( + 'dbus-send --print-reply --session --dest=com.deepin.dde.Dock /com/deepin/dde/Dock com.deepin.dde.Dock.setPluginVisible string:"回收站" boolean:false') + + def test_dde_1271281_1(self, setup_teardown_1271281): + """文件管理器——清空回收站""" + # 1. 在回收站内没有任何文件时,查看页面显示 + # 1. 没有清空回收站按钮显示 + euler = DdeMethod() + euler.dde_file_manager.click_trash_dir_in_left_view_by_attr() + sleep(3) + self.assert_image_not_exist_in_dde("test_dde_1271281_1") + + def test_dde_1271281_2(self, setup_teardown_1271281): + """文件管理器——清空回收站""" + # 2. 在回收站内有文件时,查看页面显示 + # 2. 回收站上方会显示清空回收站按钮 + Cmd.run_cmd("touch ~/Documents/test1") + euler = DdeMethod() + euler.dde_file_manager.click_document_dir_in_left_view_by_attr() + sleep(3) + euler.dde_file_manager.click_file_in_right_view_by_attr("test1") + Src.delete() + euler.dde_file_manager.click_trash_dir_in_left_view_by_attr() + sleep(3) + self.assert_image_exist_in_dde("test_dde_1271281_1") + # 3. 回收站上方出现按钮后,将鼠标悬停在该按钮上查看系统显示 + # 3. 系统会有tooltip提示显示 + x, y = euler.dog.element_center("EmptyTrashButton") + sleep(3) + euler.dog.move_to(x, y, duration=1) + self.assert_ocr_exist("清空回收站") + # 4. 回收站上方出现按钮后,点击清空回收站按钮,查看系统显示 + # 4. 系统会自动弹出提示对话框:您确定要清空此回收站吗 + euler.dog.click() + self.assert_ocr_exist("您确定要清空回收站") + # 5. 在系统弹出提示对话框后,点击确定按钮,查看系统显示 + # 5. 系统会自动清空当前回收站中所有文件,清空回收站后上方的按钮会自动隐藏 + euler.dde_file_manager.click_empty_confirm_btn_by_img() + sleep(1) + self.assert_file_not_exist("/home/uos/.local/share/Trash/files/test1") + self.assert_image_not_exist_in_dde("test_dde_1271281_1") + + @pytest.mark.parametrize("operate", ["cancle", "x", "esc"]) + def test_dde_1271281_3(self, setup_teardown_1271281, operate): + """文件管理器——清空回收站""" + # 6. 在系统弹出提示对话框后,点击取消按钮,查看系统显示 + # 6. 系统提示对话框取消,回收站中无任何操作 + # 7. 在系统弹出提示对话框后,点击对话框右上角的×按钮,查看系统显示 + # 7. 系统提示对话框消失,回收站无任何操作 + # 8. 在系统弹出提示对话框后,按ESC键,查看系统显示 + # 8. 系统提示对话框消失,回收站无任何操作 + Cmd.run_cmd("touch ~/Documents/test1") + euler = DdeMethod() + euler.dde_file_manager.click_document_dir_in_left_view_by_attr() + sleep(3) + euler.dde_file_manager.click_file_in_right_view_by_attr("test1") + Src.delete() + euler.dde_file_manager.click_trash_dir_in_left_view_by_attr() + sleep(3) + euler.dde_file_manager.click_empty_btn_in_right_view_by_attr() + sleep(3) + if operate == 'cancle': + euler.dde_file_manager.click_empty_cancle_btn_by_img() + elif operate == 'x': + euler.dde_file_manager.click_empty_x_btn_by_img() + elif operate == 'esc': + Src.esc() + sleep(1) + self.assert_file_exist("/home/uos/.local/share/Trash/files/test1") + self.assert_image_exist_in_dde("test_dde_1271281_1") + + def test_dde_1271281_4(self, setup_teardown_1271281): + """文件管理器——清空回收站""" + # 9. 在桌面选中回收站,右键-清空回收站,查看回收站显示 + # 9. 回收站被清空 + Cmd.run_cmd("touch /home/uos/.local/share/Trash/files/test1") + euler = DdeMethod() + Src.alt_f4() + sleep(3) + euler.dde_file_manager.right_click_trash_in_desktop_by_image() + sleep(2) + Src.down() + Src.down() + Src.enter() + sleep(1) + euler.dde_file_manager.click_empty_confirm_btn_by_img() + sleep(1) + self.assert_file_not_exist("/home/uos/.local/share/Trash/files/test1") + + def test_dde_1271281_5(self, setup_teardown_1271281_5): + """文件管理器——清空回收站""" + # 10. 在任务栏上选中回收站,右键-清空回收站,查看回收站显示 + # 10. 回收站被清空 + Cmd.run_cmd("touch /home/uos/.local/share/Trash/files/test1") + # dock栏显示回收站 + Cmd.run_cmd( + 'dbus-send --print-reply --session --dest=com.deepin.dde.Dock /com/deepin/dde/Dock com.deepin.dde.Dock.setPluginVisible string:"回收站" boolean:true') + sleep(3) + euler = DdeMethod() + euler.dde_dock.right_click_trash_icon_by_attr() + Src.down() + Src.down() + Src.enter() + sleep(1) + euler.dde_dock.click_by_ocr("删除") + sleep(1) + self.assert_file_not_exist("/home/uos/.local/share/Trash/files/test1") \ No newline at end of file diff --git a/dde.csv b/dde.csv index 699a4b018c828ccda75a116dedaef3ed2bbb140b..970756dcbabd8736aac7b27cffdb3de04e8270c7 100644 --- a/dde.csv +++ b/dde.csv @@ -45,4 +45,5 @@ 1271327,,, 1271331,,, 1271175,,, -1271283,,, \ No newline at end of file +1271283,,, +1271281,,, \ No newline at end of file diff --git a/method/base_method.py b/method/base_method.py index 8ef7c5fda0e5e9b583ccb73019480f2be3ad155d..70fe9cafe28bf04904215d7b0f8d570c933c6589 100644 --- a/method/base_method.py +++ b/method/base_method.py @@ -42,6 +42,10 @@ class BaseMethod(Src): """通过图像识别点击""" self.click(*self.find_image(f"{config.IMAGE_RES}/{img_name}")) + def right_click_by_img(self, img_name): + """通过图像识别右键点击""" + self.right_click(*self.find_image(f"{config.IMAGE_RES}/{img_name}")) + def double_click_by_img(self, img_name): """通过图像识别双击""" self.double_click(*self.find_image(f"{config.IMAGE_RES}/{img_name}")) diff --git a/method/image_res/desktop_trash.png b/method/image_res/desktop_trash.png new file mode 100755 index 0000000000000000000000000000000000000000..9d4f050ef7d5404391881eb94269e18ee4cd8f75 Binary files /dev/null and b/method/image_res/desktop_trash.png differ diff --git a/method/image_res/desktop_trash_no_empty.png b/method/image_res/desktop_trash_no_empty.png new file mode 100755 index 0000000000000000000000000000000000000000..1a559dec28cf64182cba989207c52b335666b973 Binary files /dev/null and b/method/image_res/desktop_trash_no_empty.png differ diff --git a/method/image_res/trash_empty_cancle.png b/method/image_res/trash_empty_cancle.png new file mode 100755 index 0000000000000000000000000000000000000000..5565bbb7ccd7a89d3d69dddf762fd9ecb6464cbe Binary files /dev/null and b/method/image_res/trash_empty_cancle.png differ diff --git a/method/image_res/trash_empty_confirm.png b/method/image_res/trash_empty_confirm.png new file mode 100755 index 0000000000000000000000000000000000000000..cd7ab8cfef866b8d9c5f87bb18e1e551bd7647ec Binary files /dev/null and b/method/image_res/trash_empty_confirm.png differ diff --git a/method/image_res/trash_empty_x.png b/method/image_res/trash_empty_x.png new file mode 100755 index 0000000000000000000000000000000000000000..5edc0c43781bf9b5ed1f7b0dbbd9a68e8c03b176 Binary files /dev/null and b/method/image_res/trash_empty_x.png differ diff --git a/method/vender/dde_dock_method.py b/method/vender/dde_dock_method.py index 0de5e6404e76580ece17e0bc6edb89ead9137720..3332ad3a0dba6ceb2ec4bb77f71d33be031904dd 100644 --- a/method/vender/dde_dock_method.py +++ b/method/vender/dde_dock_method.py @@ -44,3 +44,7 @@ class DdeDockMethod(BaseMethod): def click_datetime_icon_by_attr(self): """在任务栏中通过元素点击右下角时间区域""" self.click_by_attr("Btn_datetime") + + def right_click_trash_icon_by_attr(self): + """在任务栏中通过元素点击右下角回收站""" + self.right_click_by_attr("Btn_trash") diff --git a/method/vender/dde_file_manager_method.py b/method/vender/dde_file_manager_method.py index 70d670dc84e0cdf0302e25bb488981db16e820d3..739ee92adafaf4f612cb2334f22347ffcd236b1d 100644 --- a/method/vender/dde_file_manager_method.py +++ b/method/vender/dde_file_manager_method.py @@ -65,4 +65,24 @@ class DdeFileManagerMethod(BaseMethod): self.dog.find_element_by_attr(f"$//{file_name}").point() self.right_click() except: - raise ElementNotFound(file_name) \ No newline at end of file + raise ElementNotFound(file_name) + + def click_empty_btn_in_right_view_by_attr(self): + """点击回收站右上方的清空按钮""" + self.dog.element_click("EmptyTrashButton") + + def click_empty_confirm_btn_by_img(self): + """回收站清空按钮弹窗,点击确认""" + self.click_by_img("trash_empty_confirm.png") + + def click_empty_cancle_btn_by_img(self): + """回收站清空按钮弹窗,点击取消""" + self.click_by_img("trash_empty_cancle.png") + + def click_empty_x_btn_by_img(self): + """回收站清空按钮弹窗,点击x""" + self.click_by_img("trash_empty_cancle.png") + + def right_click_trash_in_desktop_by_image(self): + """桌面,右键回收站(有文件)""" + self.right_click_by_img("desktop_trash_no_empty.png")