Skip to content

Commit 909120c

Browse files
authored
Merge pull request #37 from Integration-Automation/dev
Dev
2 parents ed83ad4 + a938749 commit 909120c

File tree

21 files changed

+302
-35
lines changed

21 files changed

+302
-35
lines changed

automation_editor/automation_editor_ui/editor_main/main_ui.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
menu.api_testka_menu.build_api_testka_menu import set_apitestka_menu
1111
from automation_editor.automation_editor_ui. \
1212
menu.auto_control_menu.build_autocontrol_menu import set_autocontrol_menu
13+
from automation_editor.automation_editor_ui.menu.automation_file_menu.build_automation_file_menu import \
14+
set_automation_file_menu
1315
from automation_editor.automation_editor_ui.menu.install_menu.build_install_menu import set_install_menu
1416
from automation_editor.automation_editor_ui.menu. \
1517
load_density_menu.build_load_density_menu import set_load_density_menu
@@ -29,6 +31,7 @@ def __init__(self, debug_mode: bool = False, **kwargs):
2931
set_apitestka_menu(self)
3032
set_load_density_menu(self)
3133
set_web_runner_menu(self)
34+
set_automation_file_menu(self)
3235
set_install_menu(self)
3336
syntax_extend_package(self)
3437
complete_extend_package(self)

automation_editor/automation_editor_ui/menu/auto_control_menu/build_autocontrol_menu.py

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
import sys
22
import webbrowser
33

4+
import je_auto_control
45
from PySide6.QtGui import QAction
5-
from PySide6.QtWidgets import QMainWindow
6+
from PySide6.QtWidgets import QMainWindow, QPlainTextEdit
67

78
from automation_editor.utils.test_executor.auto_control.auto_control_process import \
89
call_auto_control_test, call_auto_control_test_with_send, call_auto_control_test_multi_file, \
@@ -87,6 +88,23 @@ def set_autocontrol_menu(ui_we_want_to_set: QMainWindow):
8788
ui_we_want_to_set.autocontrol_project_menu.addAction(
8889
ui_we_want_to_set.create_autocontrol_project_action
8990
)
91+
# Record
92+
ui_we_want_to_set.autocontrol_record_menu = ui_we_want_to_set.autocontrol_menu.addMenu("Record")
93+
ui_we_want_to_set.record_action = QAction("Start Record")
94+
ui_we_want_to_set.record_action.triggered.connect(
95+
je_auto_control.record
96+
)
97+
ui_we_want_to_set.autocontrol_record_menu.addAction(
98+
ui_we_want_to_set.record_action
99+
)
100+
# Stop Record
101+
ui_we_want_to_set.stop_record_action = QAction("Stop Record")
102+
ui_we_want_to_set.stop_record_action.triggered.connect(
103+
lambda: stop_record(ui_we_want_to_set.code_edit)
104+
)
105+
ui_we_want_to_set.autocontrol_record_menu.addAction(
106+
ui_we_want_to_set.stop_record_action
107+
)
90108

91109

92110
def open_web_browser(url: str) -> None:
@@ -101,3 +119,7 @@ def create_project() -> None:
101119
package.create_project_dir()
102120
except ImportError as error:
103121
print(repr(error), file=sys.stderr)
122+
123+
124+
def stop_record(set_stop_record_text_container: QPlainTextEdit):
125+
set_stop_record_text_container.appendPlainText(str(je_auto_control.stop_record()))
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
import sys
2+
import webbrowser
3+
4+
from PySide6.QtGui import QAction
5+
from PySide6.QtWidgets import QMainWindow
6+
7+
from automation_editor.utils.test_executor.file_automation.file_automation_process import call_file_automation_test, \
8+
call_file_automation_test_with_send, call_file_automation_test_multi_file, \
9+
call_file_automation_test_multi_file_and_send
10+
11+
12+
def set_automation_file_menu(ui_we_want_to_set: QMainWindow):
13+
"""
14+
Build menu include WebRunner feature.
15+
:param ui_we_want_to_set: main window to add menu.
16+
:return: None
17+
"""
18+
ui_we_want_to_set.automation_file_menu = ui_we_want_to_set.menu.addMenu("FileAutomation")
19+
ui_we_want_to_set.automation_run_file_menu = ui_we_want_to_set.automation_file_menu.addMenu("Run")
20+
# Run FileAutomation Script
21+
ui_we_want_to_set.run_file_automation_action = QAction("Run FileAutomation Script")
22+
ui_we_want_to_set.run_file_automation_action.triggered.connect(
23+
lambda: call_file_automation_test(
24+
ui_we_want_to_set,
25+
ui_we_want_to_set.code_edit.toPlainText()
26+
)
27+
)
28+
ui_we_want_to_set.automation_run_file_menu.addAction(ui_we_want_to_set.run_file_automation_action)
29+
# Run FileAutomation Script With Send
30+
ui_we_want_to_set.run_file_automation_action_with_send = QAction("Run FileAutomation With Send")
31+
ui_we_want_to_set.run_file_automation_action_with_send.triggered.connect(
32+
lambda: call_file_automation_test_with_send(
33+
ui_we_want_to_set,
34+
ui_we_want_to_set.code_edit.toPlainText()
35+
)
36+
)
37+
ui_we_want_to_set.automation_run_file_menu.addAction(
38+
ui_we_want_to_set.run_file_automation_action_with_send
39+
)
40+
# Run Multi FileAutomation Script
41+
ui_we_want_to_set.run_multi_file_automation_action = QAction("Run Multi FileAutomation Script")
42+
ui_we_want_to_set.run_multi_file_automation_action.triggered.connect(
43+
lambda: call_file_automation_test_multi_file(
44+
ui_we_want_to_set,
45+
)
46+
)
47+
ui_we_want_to_set.automation_run_file_menu.addAction(
48+
ui_we_want_to_set.run_multi_file_automation_action
49+
)
50+
# Run Multi FileAutomation Script With Send
51+
ui_we_want_to_set.run_multi_file_automation_action_with_send = QAction("Run Multi FileAutomation Script With Send")
52+
ui_we_want_to_set.run_multi_file_automation_action_with_send.triggered.connect(
53+
lambda: call_file_automation_test_multi_file_and_send(
54+
ui_we_want_to_set,
55+
)
56+
)
57+
ui_we_want_to_set.automation_run_file_menu.addAction(
58+
ui_we_want_to_set.run_multi_file_automation_action_with_send
59+
)
60+
ui_we_want_to_set.file_automation_help_menu = ui_we_want_to_set.automation_file_menu.addMenu("HELP")
61+
# # Open Doc
62+
# ui_we_want_to_set.open_file_automation_doc_action = QAction("Open FileAutomation Doc")
63+
# ui_we_want_to_set.open_file_automation_doc_action.triggered.connect(
64+
# lambda: open_web_browser(
65+
# "https://webrunner.readthedocs.io/en/latest/"
66+
# )
67+
# )
68+
# ui_we_want_to_set.file_automation_help_menu.addAction(
69+
# ui_we_want_to_set.open_file_automation_doc_action
70+
# )
71+
# Open Github
72+
ui_we_want_to_set.open_file_automation_github_action = QAction("Open FileAutomation GitHub")
73+
ui_we_want_to_set.open_file_automation_github_action.triggered.connect(
74+
lambda: open_web_browser(
75+
"https://github.com/Integration-Automation/FileAutomation"
76+
)
77+
)
78+
ui_we_want_to_set.file_automation_help_menu.addAction(
79+
ui_we_want_to_set.open_file_automation_github_action
80+
)
81+
ui_we_want_to_set.file_automation_project_menu = ui_we_want_to_set.automation_file_menu.addMenu("Project")
82+
# Create Project
83+
ui_we_want_to_set.create_web_runner_project_action = QAction("Create FileAutomation Project")
84+
ui_we_want_to_set.create_web_runner_project_action.triggered.connect(
85+
create_project
86+
)
87+
ui_we_want_to_set.file_automation_project_menu.addAction(
88+
ui_we_want_to_set.create_web_runner_project_action
89+
)
90+
91+
92+
def open_web_browser(url: str) -> None:
93+
webbrowser.open(url=url)
94+
95+
96+
def create_project() -> None:
97+
try:
98+
import file_automation
99+
package = file_automation
100+
if package is not None:
101+
package.create_project_dir()
102+
except ImportError as error:
103+
print(repr(error), file=sys.stderr)

automation_editor/automation_editor_ui/menu/web_runner_menu/build_webrunner_menu.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def set_web_runner_menu(ui_we_want_to_set: QMainWindow):
1616
"""
1717
ui_we_want_to_set.web_runner_menu = ui_we_want_to_set.menu.addMenu("WebRunner")
1818
ui_we_want_to_set.web_runner_run_menu = ui_we_want_to_set.web_runner_menu.addMenu("Run")
19-
# Run WebRunner Script
19+
# Run WEBRunner Script
2020
ui_we_want_to_set.run_web_runner_action = QAction("Run WebRunner Script")
2121
ui_we_want_to_set.run_web_runner_action.triggered.connect(
2222
lambda: call_web_runner_test(
@@ -25,7 +25,7 @@ def set_web_runner_menu(ui_we_want_to_set: QMainWindow):
2525
)
2626
)
2727
ui_we_want_to_set.web_runner_run_menu.addAction(ui_we_want_to_set.run_web_runner_action)
28-
# Run AutoControl Script With Send
28+
# Run WEBRunner Script With Send
2929
ui_we_want_to_set.run_web_runner_action_with_send = QAction("Run WebRunner With Send")
3030
ui_we_want_to_set.run_web_runner_action_with_send.triggered.connect(
3131
lambda: call_web_runner_test_with_send(
@@ -36,7 +36,7 @@ def set_web_runner_menu(ui_we_want_to_set: QMainWindow):
3636
ui_we_want_to_set.web_runner_run_menu.addAction(
3737
ui_we_want_to_set.run_web_runner_action_with_send
3838
)
39-
# Run Multi AutoControl Script
39+
# Run Multi WEBRunner Script
4040
ui_we_want_to_set.run_multi_web_runner_action = QAction("Run Multi WebRunner Script")
4141
ui_we_want_to_set.run_multi_web_runner_action.triggered.connect(
4242
lambda: call_web_runner_test_multi_file(
@@ -46,7 +46,7 @@ def set_web_runner_menu(ui_we_want_to_set: QMainWindow):
4646
ui_we_want_to_set.web_runner_run_menu.addAction(
4747
ui_we_want_to_set.run_multi_web_runner_action
4848
)
49-
# Run Multi AutoControl Script With Send
49+
# Run Multi WEBRunner Script With Send
5050
ui_we_want_to_set.run_multi_web_runner_action_with_send = QAction("Run Multi WebRunner Script With Send")
5151
ui_we_want_to_set.run_multi_web_runner_action_with_send.triggered.connect(
5252
lambda: call_web_runner_test_multi_file_and_send(

automation_editor/automation_editor_ui/syntax/syntax_keyword.py

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
"generate_json_report", "generate_xml",
44
"generate_xml_report", "execute_action", "execute_files", "add_package_to_executor",
55
"flask_mock_server_add_router",
6-
"start_flask_mock_server"
7-
]
6+
"start_flask_mock_server"]
7+
88
auto_control_keys: list = [
99
"mouse_left", "mouse_right", "mouse_middle", "click_mouse", "get_mouse_table", "get_mouse_position", "press_mouse",
1010
"release_mouse", "mouse_scroll", "set_mouse_position", "get_special_table", "get_keyboard_keys_table",
@@ -13,8 +13,8 @@
1313
"locate_image_center", "locate_and_click", "screen_size", "screenshot", "set_record_enable", "generate_html",
1414
"generate_json", "generate_xml", "generate_html_report", "generate_json_report", "generate_xml_report", "record",
1515
"stop_record", "execute_action", "execute_files", "add_package_to_executor", "add_package_to_callback_executor",
16-
"create_project"
17-
]
16+
"create_project"]
17+
1818
web_runner_keys: list = [
1919
"get_webdriver_manager", "change_index_of_webdriver", "quit", "SaveTestObject", "CleanTestObject", "set_driver",
2020
"set_webdriver_options_capability", "find_element", "find_elements", "implicitly_wait", "explict_wait", "to_url",
@@ -32,17 +32,26 @@
3232
"element_value_of_css_property", "element_screenshot", "element_change_web_element",
3333
"element_check_current_web_element", "element_get_select", "set_record_enable", "generate_html",
3434
"generate_html_report", "generate_json", "generate_json_report", "generate_xml", "generate_xml_report",
35-
"execute_action", "execute_files", "add_package_to_executor", "add_package_to_callback_executor"
36-
]
35+
"execute_action", "execute_files", "add_package_to_executor", "add_package_to_callback_executor"]
3736

3837
load_density_keys: list = [
3938
"start_test", "generate_html", "generate_html_report", "generate_json", "generate_json_report", "generate_xml",
40-
"generate_xml_report", "execute_action", "execute_files", "add_package_to_executor"
41-
]
39+
"generate_xml_report", "execute_action", "execute_files", "add_package_to_executor"]
40+
41+
automation_file_keys: list = [
42+
"create_file", "copy_file", "rename_file", "remove_file", "copy_all_file_to_dir",
43+
"copy_specify_extension_file", "copy_dir", "create_dir", "remove_dir_tree", "zip_dir", "zip_file", "zip_info",
44+
"zip_file_info", "set_zip_password", "unzip_file", "read_zip_file", "unzip_all", "drive_later_init",
45+
"drive_search_all_file", "drive_search_field", "drive_search_file_mimetype", "drive_upload_dir_to_folder",
46+
"drive_upload_to_folder", "drive_upload_dir_to_drive", "drive_upload_to_drive",
47+
"drive_add_folder", "drive_share_file_to_anyone", "drive_share_file_to_domain",
48+
"drive_share_file_to_user", "drive_delete_file", "drive_download_file", "drive_download_file_from_folder",
49+
"execute_action", "execute_files", "add_package_to_executor"]
4250

4351
package_keyword_list = {
4452
"je_auto_control": auto_control_keys,
4553
"je_load_density": load_density_keys,
4654
"je_api_testka": api_testka_keys,
47-
"je_web_runner": web_runner_keys
55+
"je_web_runner": web_runner_keys,
56+
"automation_file": automation_file_keys
4857
}

automation_editor/utils/manager/package_manager/package_manager_class.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ def __init__(self):
99
"je_auto_control",
1010
"je_load_density",
1111
"je_api_testka",
12-
"je_web_runner"
12+
"je_web_runner",
13+
"automation_file"
1314
]
1415

1516

automation_editor/utils/test_executor/check_mail_thunder.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55

66
def check_mail_thunder_install():
7-
if package_manager.installed_package_dict.get("je_mail_thunder", None) is None:
8-
raise ITETestExecutorException(
9-
not_install_exception + " je_mail_thunder"
10-
)
7+
try:
8+
import je_mail_thunder
9+
except ImportError:
10+
raise ITETestExecutorException(not_install_exception + " je_mail_thunder")
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
import json
2+
import sys
3+
4+
from PySide6.QtWidgets import QMainWindow
5+
6+
from automation_editor.extend.mail_thunder_extend.mail_thunder_setting import send_after_test
7+
from automation_editor.automation_editor_ui.show_code_window.code_window import CodeWindow
8+
from automation_editor.utils.exception.exception_tags import wrong_test_data_format_exception_tag
9+
from automation_editor.utils.exception.exceptions import ITETestExecutorException
10+
from automation_editor.utils.file_process.get_dir_file_list import ask_and_get_dir_files_as_list
11+
from automation_editor.utils.test_executor.check_mail_thunder import check_mail_thunder_install
12+
from automation_editor.utils.test_executor.task_process_manager import TaskProcessManager
13+
14+
15+
def call_file_automation_test(
16+
main_window: QMainWindow,
17+
test_format_code: str,
18+
program_buffer: int = 1024000
19+
):
20+
try:
21+
code_window = CodeWindow()
22+
main_window.current_run_code_window.append(code_window)
23+
TaskProcessManager(
24+
main_window=code_window,
25+
program_buffer_size=program_buffer
26+
).start_test_process(
27+
"automation_file",
28+
exec_str=test_format_code,
29+
)
30+
except json.decoder.JSONDecodeError as error:
31+
print(
32+
repr(error) +
33+
"\n"
34+
+ wrong_test_data_format_exception_tag,
35+
file=sys.stderr
36+
)
37+
except ITETestExecutorException as error:
38+
print(repr(error), file=sys.stderr)
39+
40+
41+
def call_file_automation_test_with_send(
42+
main_window: QMainWindow,
43+
test_format_code: str,
44+
program_buffer: int = 1024000
45+
):
46+
try:
47+
check_mail_thunder_install()
48+
code_window = CodeWindow()
49+
main_window.current_run_code_window.append(code_window)
50+
TaskProcessManager(
51+
main_window=code_window,
52+
task_done_trigger_function=send_after_test,
53+
program_buffer_size=program_buffer
54+
).start_test_process(
55+
"automation_file",
56+
exec_str=test_format_code,
57+
)
58+
except json.decoder.JSONDecodeError as error:
59+
print(
60+
repr(error) +
61+
"\n"
62+
+ wrong_test_data_format_exception_tag,
63+
file=sys.stderr
64+
)
65+
except ITETestExecutorException as error:
66+
print(repr(error), file=sys.stderr)
67+
68+
69+
def call_file_automation_test_multi_file(
70+
main_window: QMainWindow,
71+
program_buffer: int = 1024000
72+
):
73+
try:
74+
need_to_execute_list: list = ask_and_get_dir_files_as_list(main_window)
75+
if need_to_execute_list is not None \
76+
and isinstance(need_to_execute_list, list) and len(need_to_execute_list) > 0:
77+
for execute_file in need_to_execute_list:
78+
with open(execute_file, "r+") as test_script_json:
79+
call_file_automation_test(
80+
main_window,
81+
test_script_json.read(),
82+
program_buffer
83+
)
84+
except Exception as error:
85+
print(repr(error), file=sys.stderr)
86+
87+
88+
def call_file_automation_test_multi_file_and_send(
89+
main_window: QMainWindow,
90+
program_buffer: int = 1024000
91+
):
92+
try:
93+
check_mail_thunder_install()
94+
need_to_execute_list: list = ask_and_get_dir_files_as_list(main_window)
95+
if need_to_execute_list is not None \
96+
and isinstance(need_to_execute_list, list) and len(need_to_execute_list) > 0:
97+
for execute_file in need_to_execute_list:
98+
with open(execute_file, "r+") as test_script_json:
99+
call_file_automation_test_with_send(
100+
main_window,
101+
test_script_json.read(),
102+
program_buffer
103+
)
104+
except Exception as error:
105+
print(repr(error), file=sys.stderr)

0 commit comments

Comments
 (0)