diff --git a/case/assert_res/test_dde_1271277_1.png b/case/assert_res/test_dde_1271277_1.png new file mode 100755 index 0000000000000000000000000000000000000000..72aa8d79679098f0930e2507ecdfa0a779ad39ce Binary files /dev/null and b/case/assert_res/test_dde_1271277_1.png differ diff --git a/case/assert_res/test_dde_1271277_2.png b/case/assert_res/test_dde_1271277_2.png new file mode 100755 index 0000000000000000000000000000000000000000..0869691c888b69002762f8d46894d5e84845c946 Binary files /dev/null and b/case/assert_res/test_dde_1271277_2.png differ diff --git a/case/assert_res/test_dde_1271277_3.png b/case/assert_res/test_dde_1271277_3.png new file mode 100755 index 0000000000000000000000000000000000000000..3b0d373c155093a057ab3a547d37f0c4a125e18e Binary files /dev/null and b/case/assert_res/test_dde_1271277_3.png differ diff --git a/case/assert_res/test_dde_1271277_4.png b/case/assert_res/test_dde_1271277_4.png new file mode 100755 index 0000000000000000000000000000000000000000..5f82a78ef2f9239e6c51a8bd4fd63d0b29b60565 Binary files /dev/null and b/case/assert_res/test_dde_1271277_4.png differ diff --git a/case/assert_res/test_dde_1271277_5.png b/case/assert_res/test_dde_1271277_5.png new file mode 100755 index 0000000000000000000000000000000000000000..526f6eadde4f9e7d937395ecc1e0f02f175e9151 Binary files /dev/null and b/case/assert_res/test_dde_1271277_5.png differ diff --git a/case/test_dde_1271277.py b/case/test_dde_1271277.py new file mode 100644 index 0000000000000000000000000000000000000000..ae40f41eaa52064bc01062bef6d0f937faec26d0 --- /dev/null +++ b/case/test_dde_1271277.py @@ -0,0 +1,118 @@ +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 CmdCtl as Cmd +from src import Src +from src import sleep + + +class TestDdeFileManagerCase(BaseCase): + + @pytest.fixture(scope="function", autouse=True) + def setup_teardown_1271277(self): + """前置和后置""" + euler = DdeMethod() + euler.dde_dock.click_launcher_btn_by_attr() + sleep(3) + euler.dde_launcher.click_search_box_by_attr() + Src.input("kantu") + sleep(3) + euler.dde_launcher.click_by_attr("看图") + euler.click(*euler.ocr("打开图片")) + sleep(3) + euler.dde_desktop.click_picture_dir_in_left_dialog_by_attr() + sleep(3) + + yield + Src.kill_process("deepin-image-viewer") + Src.kill_process("dde-desktop") + Cmd.run_cmd("rm -rf ~/Pictures/test.txt") + Cmd.run_cmd("rm -rf ~/Pictures/uos.PNG") + Cmd.run_cmd("rm -rf ~/Pictures/test1") + Cmd.run_cmd("rm -rf ~/Videos") + sleep(5) + + def test_dde_1271277_1(self): + """文件管理器——打开文件""" + # 1. 打开看图应用,点击打开图片,系统会自动弹出一个文件选择对话框,查看对话框显示 + # 1. 对话框会以文件管理器的形式打开,可以选择相关文件 + Cmd.run_cmd("echo hello > ~/Pictures/test.txt") + DdeMethod().dde_file_manager.cp_static_res("uos.PNG", "~/Pictures/") + euler = DdeMethod() + self.assert_ocr_exist("所有图片") + # 2. 假如只能打开图片文件,查看打开对话框中的文件显示 + # 2. 图片文件可以被选中,其他文件为置灰状态,不能被选中 + euler.dde_desktop.click_icon_view_in_dialog_by_attr() # 图标视图 + euler.dde_desktop.click_file_in_dialog_by_attr("uos.PNG") + self.assert_image_exist_in_dde("test_dde_1271277_1.png") + sleep(3) + euler.dde_desktop.click_file_in_dialog_by_attr("test.txt") + self.assert_image_exist_in_dde("test_dde_1271277_1.png") + # 3. 在文件选择对话框中,选中图片文件,点击打开按钮,查看系统显示 + # 3. 可以正常的打开选中的图片文件 + sleep(1) + euler.click(*euler.ocr("打开")) + self.assert_image_exist_in_dde("test_dde_1271277_3.png") + + def test_dde_1271277_2(self): + """文件管理器——打开文件""" + # 4. 在文件选中对话框中,用鼠标拖动右上角的图标大小调节按钮,查看对话框中的文件显示 + # 4. 对话框中的文件会随着大小调节按钮变化而变化 + Cmd.run_cmd("echo hello > ~/Pictures/test.txt") + DdeMethod().dde_file_manager.cp_static_res("uos.PNG", "~/Pictures/") + euler = DdeMethod() + euler.dde_desktop.click_icon_view_in_dialog_by_attr() # 图标视图 + euler.dde_desktop.click_file_in_dialog_by_attr("uos.PNG") + sleep(3) + x, y = euler.dde_desktop.get_x_y_by_img("desktop_size_set_button.png") + Src.click(x + 45, y) + sleep(3) + self.assert_image_exist_in_dde("test_dde_1271277_4.png") + + @pytest.mark.parametrize("operate", ["cancle", "esc"]) + def test_dde_1271277_3(self, operate): + """文件管理器——打开文件""" + # 5. 在文件选中对话框中,点击取消按钮,查看对话框显示 + # 5. 对话框会自动退出,不进行任何操作 + # 6. 在文件选中对话框中,直接按ESC键,查看对话框显示 + # 6. 对话框会自动退出 + euler = DdeMethod() + if operate == "cancle": + euler.click(*euler.ocr("取消")) + elif operate == "esc": + Src.esc() + self.assert_ocr_not_exist("所有图片") + + def test_dde_1271277_4(self): + """文件管理器——打开文件""" + # 7. 在文件选择对话框中,选择一个路径较深的文件,查看能否正常打开 + # 7. 可以正常打开 + Cmd.run_cmd("mkdir -p ~/Pictures/test1/test2/test3/test4/test5") + DdeMethod().dde_file_manager.cp_static_res("uos.PNG", + "~/Pictures/test1/test2/test3/test4/test5") + + euler = DdeMethod() + euler.dde_desktop.click_search_btn_in_dialog_by_attr() + Src.input("/home/uos/Pictures/test1/test2/test3/test4/test5") + Src.enter() + sleep(3) + euler.dde_desktop.click_file_in_dialog_by_attr("uos.PNG") + sleep(1) + euler.click(*euler.ocr("打开")) + self.assert_image_exist_in_dde("test_dde_1271277_3.png") + + def test_dde_1271277_5(self): + """文件管理器——打开文件""" + # 8. 在文件选择对话框中,选中多个文件,点击打开按钮,查看软件显示 + # 8. 可以同时打开多个文件 + DdeMethod().dde_file_manager.cp_static_res("uos.PNG", "~/Videos") + DdeMethod().dde_file_manager.cp_static_res("panghu.PNG", "~/Videos") + euler = DdeMethod() + euler.dde_desktop.click_video_dir_in_left_dialog_by_attr() + sleep(3) + euler.dde_desktop.click_center_in_dialog_by_attr() + Src.ctrl_a() + sleep(1) + euler.click(*euler.ocr("打开")) + self.assert_image_exist_in_dde("test_dde_1271277_5.png") diff --git a/case/test_dde_1271279.py b/case/test_dde_1271279.py index 7d1911aebe79fd7265fa2d14f0305b8c7e41c0aa..b8d66abfd927e7dd5686252a58ddd47eb2ab2237 100644 --- a/case/test_dde_1271279.py +++ b/case/test_dde_1271279.py @@ -19,7 +19,8 @@ class TestDdeFileManagerCase(BaseCase): Src.kill_process("dde-file-manager") Src.kill_process("dde-desktop") Cmd.run_cmd("rm -rf ~/Documents/*") - Cmd.run_cmd("rm -rf ~/Desktop/*") + Cmd.run_cmd("rm -f ~/Desktop/test1.txt") + sleep(5) def test_dde_1271279_1(self): """文件管理器——保存文件""" diff --git a/dde.csv b/dde.csv index f4b486629aaf97664a2f2e3b8ea6718fb33543aa..33f97357f6584a87d4a68ce43613b02cb5b03860 100644 --- a/dde.csv +++ b/dde.csv @@ -47,4 +47,5 @@ 1271175,,, 1271283,,, 1271281,,, -1271279,,, \ No newline at end of file +1271279,,, +1271277,,, \ No newline at end of file diff --git a/method/base_method.py b/method/base_method.py index 70fe9cafe28bf04904215d7b0f8d570c933c6589..a1427b992900ac3d1659041275725bdd992c678c 100644 --- a/method/base_method.py +++ b/method/base_method.py @@ -38,6 +38,10 @@ class BaseMethod(Src): """通过ocr识别双击""" self.double_click(*self.ocr(text)) + def get_x_y_by_img(self, img_name): + """通过图像,获取坐标""" + return self.find_image(f"{config.IMAGE_RES}/{img_name}") + def click_by_img(self, img_name): """通过图像识别点击""" self.click(*self.find_image(f"{config.IMAGE_RES}/{img_name}")) diff --git a/method/image_res/desktop_size_set_button.png b/method/image_res/desktop_size_set_button.png new file mode 100755 index 0000000000000000000000000000000000000000..edf44c0c01f39c7ea58f1bd34dc60a05dc9568a1 Binary files /dev/null and b/method/image_res/desktop_size_set_button.png differ diff --git a/method/static_res/panghu.PNG b/method/static_res/panghu.PNG new file mode 100755 index 0000000000000000000000000000000000000000..67534038900ea88596be7859e53ec22d8fad5638 Binary files /dev/null and b/method/static_res/panghu.PNG differ diff --git a/method/static_res/uos.PNG b/method/static_res/uos.PNG new file mode 100644 index 0000000000000000000000000000000000000000..88564ab6a7db1e8f2a0a64cb9bd3d98becba45ae Binary files /dev/null and b/method/static_res/uos.PNG differ diff --git a/method/vender/dde_desktop_method.py b/method/vender/dde_desktop_method.py index 92ddaab6976c1754f382d4b1a492dbfcd9af73f4..e8749814230cf712b89ebf8bf6fddb8ae4f27b10 100644 --- a/method/vender/dde_desktop_method.py +++ b/method/vender/dde_desktop_method.py @@ -1,4 +1,6 @@ from apps.dde_autotest_euler.method.base_method import BaseMethod +from src import ElementNotFound +from src.depends.dogtail.tree import SearchError class DdeDesktopMethod(BaseMethod): @@ -14,3 +16,75 @@ class DdeDesktopMethod(BaseMethod): """通过右键点击【在终端中打开】""" self.right_click(960, 540) self.click_by_ocr("在终端中打开") + + def click_center_in_dialog_by_attr(self): + """文件选择对话框,点击中心""" + try: + self.dog.find_element_by_attr(f"$//midwiget/dm_splitter/right_view").point() + self.double_click() + except ElementNotFound: + raise ElementNotFound("right_view") + + def click_file_in_dialog_by_attr(self, file_name): + """文件选择对话框,点击打开文管右侧文件""" + try: + self.dog.find_element_by_attr(f"$//right_view/file_view//{file_name}").point() + self.click() + except ElementNotFound: + raise ElementNotFound(file_name) + + def double_click_file_in_dialog_by_attr(self, file_name): + """文件选择对话框,双击打开文管右侧文件""" + try: + self.dog.find_element_by_attr(f"$//right_view/file_view//{file_name}").point() + self.double_click() + except ElementNotFound: + raise ElementNotFound(file_name) + + def click_icon_view_in_dialog_by_attr(self): + """文件选择对话框,图标视图""" + try: + self.dog.find_element_by_attr(f"$//ContollerToolBar/action_botton_1").point() + self.double_click() + except ElementNotFound: + raise ElementNotFound("图标视图按钮") + + def click_list_view_in_dialog_by_attr(self): + """文件选择对话框,列表视图""" + try: + self.dog.find_element_by_attr(f"$//ContollerToolBar/action_botton_2").point() + self.double_click() + except ElementNotFound: + raise ElementNotFound("列表视图按钮") + + def click_search_btn_in_dialog_by_attr(self): + """文件选择对话框,搜索按钮""" + try: + self.dog.find_element_by_attr(f"$//crumb_search_frame/search_button").point() + self.click() + except ElementNotFound: + raise ElementNotFound("search_button") + + def click_dir_in_left_dialog_by_attr(self, _dir): + """文件选择对话框,点击侧边栏目录""" + try: + self.dog.find_element_by_attr(f"$//side_bar_view//{_dir}").point() + self.click() + except SearchError: + raise ElementNotFound(_dir) + + def click_document_dir_in_left_dialog_by_attr(self): + """文件选择对话框,文档目录""" + self.click_dir_in_left_dialog_by_attr("文档") + + def click_desktop_dir_in_left_dialog_by_attr(self): + """文件选择对话框,桌面目录""" + self.click_dir_in_left_dialog_by_attr("桌面") + + def click_video_dir_in_left_dialog_by_attr(self): + """文件选择对话框,视频目录""" + self.click_dir_in_left_dialog_by_attr("视频") + + def click_picture_dir_in_left_dialog_by_attr(self): + """文件选择对话框,图片目录""" + self.click_dir_in_left_dialog_by_attr("图片") diff --git a/method/vender/dde_file_manager_method.py b/method/vender/dde_file_manager_method.py index 529246196f0dc2b90297c8b6d06948b5fc1b4a55..16fd509122e86959ee675ab6dabb22d94bc9b260 100644 --- a/method/vender/dde_file_manager_method.py +++ b/method/vender/dde_file_manager_method.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- from apps.dde_autotest_euler.method.base_method import BaseMethod -from src import Src, sleep, ElementNotFound +from src import sleep, ElementNotFound from src.depends.dogtail.tree import SearchError +from apps.dde_autotest_euler.config import config class DdeFileManagerMethod(BaseMethod): @@ -14,10 +15,6 @@ class DdeFileManagerMethod(BaseMethod): """在文管中通过元素点击""" self.dog.element_click(path) - def click_center_in_right_view_by_attr(self): - """点击右侧内容区域的空白处""" - self.click(*self.dog.element_center("DMainWindow")) - def click_trash_dir_in_left_view_by_attr(self): """文管侧边栏点击,回收站目录""" self.click_by_attr("回收站") @@ -30,6 +27,10 @@ class DdeFileManagerMethod(BaseMethod): """文管侧边栏点击,桌面目录""" self.click_dir_in_left_view_by_attr("桌面") + def click_video_dir_in_left_view_by_attr(self): + """文管侧边栏点击,视频目录""" + self.click_dir_in_left_view_by_attr("视频") + def click_dir_in_left_view_by_attr(self, _dir): """点击文管的侧边栏目录""" try: @@ -98,3 +99,8 @@ class DdeFileManagerMethod(BaseMethod): def click_dialog_pop_replace_by_image(self): """文件选择对话框, 弹窗的替换按钮""" self.click_by_img("dde_file_manager_dialog_pop_replace.png") + + def cp_static_res(self, file_name, dest_path): + """复制static_res下的文件到其他路径""" + file_path = f"{config.STATIC_RES}/{file_name}" + self.run_cmd(f"cp {file_path} {dest_path}")