Skip to content
Merged

Dev #76

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/webrunner_dev_python3_12.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: WebRunner Dev Python3.9
name: WebRunner Dev Python3.12

on:
push:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/webrunner_stable_python3_12.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: WebRunner Stable Python3.9
name: WebRunner Stable Python3.12

on:
push:
Expand Down
14 changes: 7 additions & 7 deletions stable.toml → dev.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Rename to build stable version
# This is stable version
# Rename to build dev version
# This is dev version
[build-system]
requires = ["setuptools>=61.0"]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"

[project]
name = "je_web_runner"
version = "0.0.63"
name = "je_web_runner_dev"
version = "0.0.94"
authors = [
{ name = "JE-Chen", email = "jechenmailman@gmail.com" },
]
Expand All @@ -15,8 +15,8 @@ requires-python = ">=3.10"
license-files = ["LICENSE"]
dependencies = [
"selenium>=4.0.0",
'requests',
'python-dotenv',
"requests",
"python-dotenv",
"webdriver-manager",
]
classifiers = [
Expand Down
7 changes: 5 additions & 2 deletions je_web_runner/manager/webrunner_manager.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from typing import List

from selenium.common.exceptions import WebDriverException
from selenium.webdriver.remote.webdriver import WebDriver

Expand All @@ -18,17 +20,18 @@ def __init__(self, **kwargs):
self.webdriver_element = web_element_wrapper
self.current_webdriver: [WebDriver, None] = None

def new_driver(self, webdriver_name: str, **kwargs) -> None:
def new_driver(self, webdriver_name: str, options: List[str] = None, **kwargs) -> None:
"""
use to create new webdriver instance
:param options:
:param webdriver_name: which webdriver we want to use [chrome, chromium, firefox, edge, ie]
:param kwargs: webdriver download manager param
:return: None
"""
web_runner_logger.info(f"WebdriverManager new_driver, webdriver_name: {webdriver_name}, params: {kwargs}")
param = locals()
try:
self.current_webdriver = webdriver_wrapper_instance.set_driver(webdriver_name, **kwargs)
self.current_webdriver = webdriver_wrapper_instance.set_driver(webdriver_name, options=options, **kwargs)
self._current_webdriver_list.append(self.current_webdriver)
record_action_to_list("web runner manager new_driver", param, None)
except Exception as error:
Expand Down
45 changes: 25 additions & 20 deletions je_web_runner/utils/exception/exception_tags.py
Original file line number Diff line number Diff line change
@@ -1,27 +1,32 @@
selenium_wrapper_web_driver_not_found_error = "Web Driver not found"
selenium_wrapper_web_driver_not_found_error = "WebDriver not found"

selenium_wrapper_set_options_error = "only accept dict type"
selenium_wrapper_set_argument_error = "only accept str type"
selenium_wrapper_set_options_error = "options must be a dict"
selenium_wrapper_set_argument_error = "argument must be a string"

executor_data_error = "executor received invalid data"
executor_list_error = "executor received invalid data: list is empty or of wrong type"

executor_data_error = "executor receive wrong data"
executor_list_error = "executor receive wrong data list is none or wrong type"
# json
cant_find_json_error = "can't find json"
cant_save_json_error = "can't save json"
cant_reformat_json_error = "can't reformat json is type right?"
cant_find_element_in_json_error = "can't find element in json"
json_type_error = "json type error"
wrong_json_data_error = "can't parser json"
cant_generate_json_report: str = "can't generate json report"

html_generate_no_data_tag = "can't make html report, data is null?"
cant_find_json_error = "can't find JSON file"
cant_save_json_error = "can't save JSON file"
cant_reformat_json_error = "can't reformat JSON: is the type correct?"
cant_find_element_in_json_error = "can't find element in JSON"
json_type_error = "JSON type error"
wrong_json_data_error = "can't parse JSON"
cant_generate_json_report: str = "can't generate JSON report"

html_generate_no_data_tag = "can't generate HTML report: data is null"

# add command
add_command_exception_tag = "command value type should be as method or function"
add_command_exception_tag = "command value type must be a method or function"

# argparse
argparse_get_wrong_data = "argparse receive wrong data"
argparse_get_wrong_data = "argparse received invalid data"

# XML
cant_read_xml_error: str = "can't read xml"
xml_type_error: str = "xml type error"
cant_read_xml_error: str = "can't read XML"
xml_type_error = "XML type error"

# Callback executor
get_bad_trigger_method: str = "get bad trigger method, only accept kwargs and args"
get_bad_trigger_function: str = "get bad trigger function only accept function in event_dict"
get_bad_trigger_method: str = "invalid trigger method: only kwargs and args accepted"
get_bad_trigger_function: str = "invalid trigger function: only functions in event_dict accepted"
31 changes: 29 additions & 2 deletions je_web_runner/webdriver/webdriver_wrapper.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,15 @@
from je_web_runner.utils.test_record.test_record_class import record_action_to_list
from je_web_runner.webdriver.webdriver_with_options import set_webdriver_options_capability_wrapper

from selenium.webdriver.chrome.options import Options as ChromeOptions
from selenium.webdriver.chromium.options import ArgOptions as ChromiumOptions
from selenium.webdriver.firefox.options import Options as FirefoxOptions
from selenium.webdriver.edge.options import Options as EdgeOptions
from selenium.webdriver.ie.options import Options as IEOptions
from selenium.webdriver.safari.options import Options as SafariOptions



_webdriver_dict = {
"chrome": webdriver.Chrome,
"chromium": webdriver.Chrome,
Expand All @@ -41,6 +50,16 @@
"firefox": GeckoDriverManager,
"edge": EdgeChromiumDriverManager,
"ie": IEDriverManager,

}

_options_dict = {
"chrome": ChromeOptions,
"chromium": ChromiumOptions,
"firefox": FirefoxOptions,
"edge": EdgeOptions,
"ie": IEOptions,
"safari": SafariOptions,
}


Expand All @@ -54,7 +73,7 @@ def __init__(self):
# start a new webdriver

def set_driver(self, webdriver_name: str,
webdriver_manager_option_dict: dict = None, **kwargs) -> \
webdriver_manager_option_dict: dict = None, options: List[str] = None, **kwargs) -> \
Union[
webdriver.Chrome,
webdriver.Chrome,
Expand All @@ -64,6 +83,7 @@ def set_driver(self, webdriver_name: str,
webdriver.Safari,
]:
"""
:param options:
:param webdriver_name: which webdriver we want to use
:param webdriver_manager_option_dict: if you want to set webdriver download manager
:param kwargs: used to catch var
Expand All @@ -83,7 +103,14 @@ def set_driver(self, webdriver_name: str,
raise WebRunnerWebDriverNotFoundException(selenium_wrapper_web_driver_not_found_error)
webdriver_install_manager = _webdriver_manager_dict.get(webdriver_name)
webdriver_install_manager().install()
self.current_webdriver = webdriver_value(**kwargs)
if options and len(options) > 0:
driver_options = _options_dict.get(webdriver_name)()
if driver_options:
for option in options:
driver_options.add_argument(argument=option)
self.current_webdriver = webdriver_value(options=driver_options, **kwargs)
else:
self.current_webdriver = webdriver_value(**kwargs)
self._webdriver_name = webdriver_name
self._action_chain = ActionChains(self.current_webdriver)
record_action_to_list("webdriver wrapper set_driver", param, None)
Expand Down
14 changes: 7 additions & 7 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
# Rename to build dev version
# This is dev version
# Rename to build stable version
# This is stable version
[build-system]
requires = ["setuptools"]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "je_web_runner_dev"
version = "0.0.92"
name = "je_web_runner"
version = "0.0.65"
authors = [
{ name = "JE-Chen", email = "jechenmailman@gmail.com" },
]
Expand All @@ -15,8 +15,8 @@ requires-python = ">=3.10"
license-files = ["LICENSE"]
dependencies = [
"selenium>=4.0.0",
"requests",
"python-dotenv",
'requests',
'python-dotenv',
"webdriver-manager",
]
classifiers = [
Expand Down
2 changes: 1 addition & 1 deletion test/unit_test/executor_test/executor_test.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from je_web_runner import execute_action

test_execute_list = [
["WR_get_webdriver_manager", {"webdriver_name": "firefox"}],
["WR_get_webdriver_manager", {"webdriver_name": "firefox", "options": ["--headless"]}],
["WR_add_package_to_executor", {"package": "time"}],
["WR_implicitly_wait", {"time_to_wait": 5}],
["WR_to_url", {"url": "https://www.google.com"}],
Expand Down