ci: split UI tests for the input page in 3 groups #811
test-report-9.0.6__firefox_test_splunk_ta_example_addon_input_2 ❌
❌ test-results/test.xml
43 tests were completed in 3332s with 0 passed, 43 failed and 0 skipped.
Test suite | Passed | Failed | Skipped | Time |
---|---|---|---|---|
pytest | 43❌ | 3332s |
❌ pytest
tests.ui.test_splunk_ta_example_addon_input_2.firefox_TestInput
❌ test_example_input_two_required_field_name
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_name>>
❌ test_example_input_two_valid_length_name
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_valid_length_name>>
❌ test_example_input_two_valid_input_name
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_valid_input_name>>
❌ test_example_input_two_required_field_interval
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_interval>>
❌ test_example_input_two_valid_input_interval
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_valid_input_interval>>
❌ test_example_input_two_required_field_index
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_index>>
❌ test_example_input_two_default_value_index
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_default_value_index>>
❌ test_example_input_two_required_field_example_example_account
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_example_example_account>>
❌ test_example_input_two_required_field_example_multiple_select
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_example_multiple_select>>
❌ test_example_input_two_list_example_multiple_select
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_list_example_multiple_select>>
❌ test_example_input_two_select_select_value_example_multiple_select
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_select_select_value_example_multiple_select>>
❌ test_example_input_two_select_multiple_values_example_multiple_select
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_select_multiple_values_example_multiple_select>>
❌ test_example_input_two_help_text_entity
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_help_text_entity>>
❌ test_example_input_two_checked_example_checkbox
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_checked_example_checkbox>>
❌ test_example_input_two_unchecked_example_checkbox
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_unchecked_example_checkbox>>
❌ test_example_input_two_required_field_example_radio
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_example_radio>>
❌ test_example_input_two_select_value_example_radio
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_select_value_example_radio>>
❌ test_example_input_two_valid_input_query_start_date
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_valid_input_query_start_date>>
❌ test_example_input_two_add_frontend_validation
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_add_frontend_validation>>
❌ test_example_input_two_add_backend_validation
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_add_backend_validation>>
❌ test_example_input_two_edit_uneditable_field_name
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_edit_uneditable_field_name>>
❌ test_example_input_two_edit_frontend_validation
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_edit_frontend_validation>>
❌ test_example_input_two_edit_backend_validation
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_edit_backend_validation>>
❌ test_example_input_two_clone_default_values
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_clone_default_values>>
❌ test_example_input_two_clone_frontend_validation
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_clone_frontend_validation>>
❌ test_example_input_two_clone_backend_validation
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_clone_backend_validation>>
❌ test_example_input_two_delete_row_frontend_validation
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_delete_row_frontend_validation>>
❌ test_example_input_two_delete_row_backend_validation
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_delete_row_backend_validation>>
❌ test_example_input_two_add_close_entity
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_add_close_entity>>
❌ test_example_input_two_edit_close_entity
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_edit_close_entity>>
❌ test_example_input_two_clone_close_entity
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_clone_close_entity>>
❌ test_example_input_two_delete_close_entity
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_delete_close_entity>>
❌ test_example_input_two_add_cancel_entity
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_add_cancel_entity>>
❌ test_example_input_two_edit_cancel_entity
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_edit_cancel_entity>>
❌ test_example_input_two_clone_cancel_entity
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_clone_cancel_entity>>
❌ test_example_input_two_delete_cancel_entity
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_delete_cancel_entity>>
❌ test_example_input_two_add_duplicate_names
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_add_duplicate_names>>
❌ test_example_input_two_clone_duplicate_names
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_clone_duplicate_names>>
❌ test_example_input_two_add_valid_title
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_add_valid_title>>
❌ test_example_input_two_edit_valid_title
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_edit_valid_title>>
❌ test_example_input_two_clone_valid_title
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_clone_valid_title>>
❌ test_example_input_two_delete_valid_title
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_delete_valid_title>>
❌ test_example_input_two_delete_valid_prompt_message
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_delete_valid_prompt_message>>
Annotations
Check failure on line 0 in test-results/test.xml
github-actions / test-report-9.0.6__firefox_test_splunk_ta_example_addon_input_2
pytest ► tests.ui.test_splunk_ta_example_addon_input_2.firefox_TestInput ► test_example_input_two_required_field_name
Failed test found in:
test-results/test.xml
Error:
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_name>>
Raw output
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_name>>
@pytest.fixture(scope="function", autouse=True)
def ucc_smartx_selenium_wrapper(request):
"""
Calls ucc_smartx_selenium_helper fixture
"""
if "ucc_smartx_selenium_helper" in request.fixturenames:
> request.node.selenium_helper = request.getfixturevalue(
"ucc_smartx_selenium_helper"
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:254:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_required_field_name>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
break
except Exception as e:
last_exc = e
LOGGER.warning(
"Failed to configure the browser or login to Splunk instance for - Try={} \nTRACEBACK::{}".format(
try_number, traceback.format_exc()
)
)
else:
LOGGER.error(
"Could not connect to Browser or login to Splunk instance. Please check the logs for detailed error of each retry"
)
> raise (last_exc)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:198:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_required_field_name>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
> selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:176:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135a387c0>
browser = 'firefox', browser_version = 'latest'
splunk_web_url = 'http://splunk:8000/'
splunk_mgmt_url = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
debug = False, cred = ('admin', 'Chang3d!'), headless = False
test_case = 'firefox_test_example_input_two_required_field_name'
def __init__(
self,
browser,
browser_version,
splunk_web_url,
splunk_mgmt_url,
debug=False,
cred=("admin", "Chang3d!"),
headless=False,
test_case=None,
):
self.splunk_web_url = splunk_web_url
self.splunk_mgmt_url = splunk_mgmt_url
self.cred = cred
self.test_case = test_case
self.skip_saucelab_job = False
if "grid" in browser:
self.skip_saucelab_job = True
debug = True
if not debug:
# Using Saucelabs
self.init_sauce_env_variables()
try:
if browser == "firefox":
if debug:
self.browser = webdriver.Firefox(
firefox_options=self.get_local_firefox_opts(headless),
log_path="selenium.log",
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_firefox_opts(
browser_version
),
)
elif browser == "chrome":
if debug:
self.browser = webdriver.Chrome(
chrome_options=self.get_local_chrome_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_chrome_opts(
browser_version
),
)
# selenium local stack
elif browser == "chrome_grid":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://chrome-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_grid":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://firefox-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
# kubernetes selenium
elif browser == "chrome_k8s":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_k8s":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
elif browser == "edge":
if debug:
self.browser = Edge(
executable_path="msedgedriver",
desired_capabilities=self.get_local_edge_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
command_executor = EdgeRemoteConnection(
"https://ondemand.saucelabs.com:443/wd/hub"
)
options = EdgeOptions()
options.use_chromium = True
self.browser = webdriver.Remote(
command_executor=command_executor,
options=options,
desired_capabilities=self.get_sauce_edge_opts(browser_version),
)
elif browser == "IE":
if debug:
self.browser = webdriver.Ie(capabilities=self.get_local_ie_opts())
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_ie_opts(browser_version),
)
elif browser == "safari":
if debug:
self.browser = webdriver.Safari()
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_safari_opts(
browser_version
),
)
else:
raise Exception(
"No valid browser found.! expected=[firefox, chrome, safari], got={}".format(
browser
)
)
except Exception as e:
raise e
try:
self.browser_session = self.browser.session_id
> self.login_to_splunk(*self.cred)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:207:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135a387c0>
cred = ('admin', 'Chang3d!')
def login_to_splunk(self, *cred):
try:
> login_page = LoginPage(self)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa135a393c0>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135a387c0>
def __init__(self, ucc_smartx_selenium_helper):
"""
:param ucc_smartx_selenium_helper: Fixture with selenium driver, urls(web, mgmt) and session key
"""
> super().__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper=None)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/login.py:33:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa135a393c0>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135a387c0>
ucc_smartx_rest_helper = None, open_page = True
def __init__(
self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page=True
):
"""
:param ucc_smartx_selenium_helper: The selenium webdriver
:param ucc_smartx_rest_helper: Splunk web & management url. {"web": , "mgmt": }
"""
if ucc_smartx_selenium_helper:
self.browser = ucc_smartx_selenium_helper.browser
self.splunk_web_url = ucc_smartx_selenium_helper.splunk_web_url
if open_page:
> self.open()
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa135a393c0>
def open(self):
"""
Abstract Method. Open the page
"""
> self.browser.get(self.splunk_web_url)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="75ff76f5298c42a09b2f8381aaea84d1")>
url = 'http://splunk:8000/'
def get(self, url):
"""
Loads a web page in the current browser session.
"""
> self.execute(Command.GET, {'url': url})
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:333:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="75ff76f5298c42a09b2f8381aaea84d1")>
driver_command = 'get', params = {'url': 'http://splunk:8000/'}
def execute(self, driver_command, params=None):
"""
Sends a command to be executed by a command.CommandExecutor.
:Args:
- driver_command: The name of the command to execute as a string.
- params: A dictionary of named parameters to send with the command.
:Returns:
The command's JSON response loaded into a dictionary object.
"""
if self.session_id is not None:
if not params:
params = {'sessionId': self.session_id}
elif 'sessionId' not in params:
params['sessionId'] = self.session_id
params = self._wrap_value(params)
response = self.command_executor.execute(driver_command, params)
if response:
> self.error_handler.check_response(response)
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:321:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fa135a380d0>
response = {'status': 500, 'value': '{"value": {"stacktrace": "RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8...splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.", "error": "unknown error"}}'}
def check_response(self, response):
"""
Checks that a JSON response from the WebDriver does not have an error.
:Args:
- response - The JSON response from the WebDriver server as a dictionary
object.
:Raises: If the response contains an error message.
"""
status = response.get('status', None)
if status is None or status == ErrorCode.SUCCESS:
return
value = None
message = response.get("message", "")
screen = response.get("screen", "")
stacktrace = None
if isinstance(status, int):
value_json = response.get('value', None)
if value_json and isinstance(value_json, basestring):
import json
try:
value = json.loads(value_json)
if len(value.keys()) == 1:
value = value['value']
status = value.get('error', None)
if status is None:
status = value["status"]
message = value["value"]
if not isinstance(message, basestring):
value = message
message = message.get('message')
else:
message = value.get('message', None)
except ValueError:
pass
exception_class = ErrorInResponseException
if status in ErrorCode.NO_SUCH_ELEMENT:
exception_class = NoSuchElementException
elif status in ErrorCode.NO_SUCH_FRAME:
exception_class = NoSuchFrameException
elif status in ErrorCode.NO_SUCH_WINDOW:
exception_class = NoSuchWindowException
elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
exception_class = StaleElementReferenceException
elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
exception_class = ElementNotVisibleException
elif status in ErrorCode.INVALID_ELEMENT_STATE:
exception_class = InvalidElementStateException
elif status in ErrorCode.INVALID_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
exception_class = InvalidSelectorException
elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
exception_class = ElementNotSelectableException
elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
exception_class = ElementNotInteractableException
elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
exception_class = InvalidCookieDomainException
elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
exception_class = UnableToSetCookieException
elif status in ErrorCode.TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.SCRIPT_TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.UNKNOWN_ERROR:
exception_class = WebDriverException
elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
exception_class = UnexpectedAlertPresentException
elif status in ErrorCode.NO_ALERT_OPEN:
exception_class = NoAlertPresentException
elif status in ErrorCode.IME_NOT_AVAILABLE:
exception_class = ImeNotAvailableException
elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
exception_class = ImeActivationFailedException
elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
exception_class = MoveTargetOutOfBoundsException
elif status in ErrorCode.JAVASCRIPT_ERROR:
exception_class = JavascriptException
elif status in ErrorCode.SESSION_NOT_CREATED:
exception_class = SessionNotCreatedException
elif status in ErrorCode.INVALID_ARGUMENT:
exception_class = InvalidArgumentException
elif status in ErrorCode.NO_SUCH_COOKIE:
exception_class = NoSuchCookieException
elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
exception_class = ScreenshotException
elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
exception_class = ElementClickInterceptedException
elif status in ErrorCode.INSECURE_CERTIFICATE:
exception_class = InsecureCertificateException
elif status in ErrorCode.INVALID_COORDINATES:
exception_class = InvalidCoordinatesException
elif status in ErrorCode.INVALID_SESSION_ID:
exception_class = InvalidSessionIdException
elif status in ErrorCode.UNKNOWN_METHOD:
exception_class = UnknownMethodException
else:
exception_class = WebDriverException
if value == '' or value is None:
value = response['value']
if isinstance(value, basestring):
if exception_class == ErrorInResponseException:
raise exception_class(response, value)
raise exception_class(value)
if message == "" and 'message' in value:
message = value['message']
screen = None
if 'screen' in value:
screen = value['screen']
stacktrace = None
if 'stackTrace' in value and value['stackTrace']:
stacktrace = []
try:
for frame in value['stackTrace']:
line = self._value_or_default(frame, 'lineNumber', '')
file = self._value_or_default(frame, 'fileName', '<anonymous>')
if line:
file = "%s:%s" % (file, line)
meth = self._value_or_default(frame, 'methodName', '<anonymous>')
if 'className' in frame:
meth = "%s.%s" % (frame['className'], meth)
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if exception_class == ErrorInResponseException:
raise exception_class(response, message)
elif exception_class == UnexpectedAlertPresentException:
alert_text = None
if 'data' in value:
alert_text = value['data'].get('text')
elif 'alert' in value:
alert_text = value['alert'].get('text')
raise exception_class(message, screen, stacktrace, alert_text)
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=dnsNotFound&u=http%3A//splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py:242: WebDriverException
Check failure on line 0 in test-results/test.xml
github-actions / test-report-9.0.6__firefox_test_splunk_ta_example_addon_input_2
pytest ► tests.ui.test_splunk_ta_example_addon_input_2.firefox_TestInput ► test_example_input_two_valid_length_name
Failed test found in:
test-results/test.xml
Error:
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_valid_length_name>>
Raw output
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_valid_length_name>>
@pytest.fixture(scope="function", autouse=True)
def ucc_smartx_selenium_wrapper(request):
"""
Calls ucc_smartx_selenium_helper fixture
"""
if "ucc_smartx_selenium_helper" in request.fixturenames:
> request.node.selenium_helper = request.getfixturevalue(
"ucc_smartx_selenium_helper"
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:254:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_valid_length_name>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
break
except Exception as e:
last_exc = e
LOGGER.warning(
"Failed to configure the browser or login to Splunk instance for - Try={} \nTRACEBACK::{}".format(
try_number, traceback.format_exc()
)
)
else:
LOGGER.error(
"Could not connect to Browser or login to Splunk instance. Please check the logs for detailed error of each retry"
)
> raise (last_exc)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:198:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_valid_length_name>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
> selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:176:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358bdcf0>
browser = 'firefox', browser_version = 'latest'
splunk_web_url = 'http://splunk:8000/'
splunk_mgmt_url = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
debug = False, cred = ('admin', 'Chang3d!'), headless = False
test_case = 'firefox_test_example_input_two_valid_length_name'
def __init__(
self,
browser,
browser_version,
splunk_web_url,
splunk_mgmt_url,
debug=False,
cred=("admin", "Chang3d!"),
headless=False,
test_case=None,
):
self.splunk_web_url = splunk_web_url
self.splunk_mgmt_url = splunk_mgmt_url
self.cred = cred
self.test_case = test_case
self.skip_saucelab_job = False
if "grid" in browser:
self.skip_saucelab_job = True
debug = True
if not debug:
# Using Saucelabs
self.init_sauce_env_variables()
try:
if browser == "firefox":
if debug:
self.browser = webdriver.Firefox(
firefox_options=self.get_local_firefox_opts(headless),
log_path="selenium.log",
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_firefox_opts(
browser_version
),
)
elif browser == "chrome":
if debug:
self.browser = webdriver.Chrome(
chrome_options=self.get_local_chrome_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_chrome_opts(
browser_version
),
)
# selenium local stack
elif browser == "chrome_grid":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://chrome-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_grid":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://firefox-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
# kubernetes selenium
elif browser == "chrome_k8s":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_k8s":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
elif browser == "edge":
if debug:
self.browser = Edge(
executable_path="msedgedriver",
desired_capabilities=self.get_local_edge_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
command_executor = EdgeRemoteConnection(
"https://ondemand.saucelabs.com:443/wd/hub"
)
options = EdgeOptions()
options.use_chromium = True
self.browser = webdriver.Remote(
command_executor=command_executor,
options=options,
desired_capabilities=self.get_sauce_edge_opts(browser_version),
)
elif browser == "IE":
if debug:
self.browser = webdriver.Ie(capabilities=self.get_local_ie_opts())
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_ie_opts(browser_version),
)
elif browser == "safari":
if debug:
self.browser = webdriver.Safari()
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_safari_opts(
browser_version
),
)
else:
raise Exception(
"No valid browser found.! expected=[firefox, chrome, safari], got={}".format(
browser
)
)
except Exception as e:
raise e
try:
self.browser_session = self.browser.session_id
> self.login_to_splunk(*self.cred)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:207:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358bdcf0>
cred = ('admin', 'Chang3d!')
def login_to_splunk(self, *cred):
try:
> login_page = LoginPage(self)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358bc700>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358bdcf0>
def __init__(self, ucc_smartx_selenium_helper):
"""
:param ucc_smartx_selenium_helper: Fixture with selenium driver, urls(web, mgmt) and session key
"""
> super().__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper=None)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/login.py:33:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358bc700>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358bdcf0>
ucc_smartx_rest_helper = None, open_page = True
def __init__(
self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page=True
):
"""
:param ucc_smartx_selenium_helper: The selenium webdriver
:param ucc_smartx_rest_helper: Splunk web & management url. {"web": , "mgmt": }
"""
if ucc_smartx_selenium_helper:
self.browser = ucc_smartx_selenium_helper.browser
self.splunk_web_url = ucc_smartx_selenium_helper.splunk_web_url
if open_page:
> self.open()
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358bc700>
def open(self):
"""
Abstract Method. Open the page
"""
> self.browser.get(self.splunk_web_url)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="ef4c8a406b774c09af5328d2a033f5b6")>
url = 'http://splunk:8000/'
def get(self, url):
"""
Loads a web page in the current browser session.
"""
> self.execute(Command.GET, {'url': url})
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:333:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="ef4c8a406b774c09af5328d2a033f5b6")>
driver_command = 'get', params = {'url': 'http://splunk:8000/'}
def execute(self, driver_command, params=None):
"""
Sends a command to be executed by a command.CommandExecutor.
:Args:
- driver_command: The name of the command to execute as a string.
- params: A dictionary of named parameters to send with the command.
:Returns:
The command's JSON response loaded into a dictionary object.
"""
if self.session_id is not None:
if not params:
params = {'sessionId': self.session_id}
elif 'sessionId' not in params:
params['sessionId'] = self.session_id
params = self._wrap_value(params)
response = self.command_executor.execute(driver_command, params)
if response:
> self.error_handler.check_response(response)
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:321:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fa1358be560>
response = {'status': 500, 'value': '{"value": {"stacktrace": "RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8...splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.", "error": "unknown error"}}'}
def check_response(self, response):
"""
Checks that a JSON response from the WebDriver does not have an error.
:Args:
- response - The JSON response from the WebDriver server as a dictionary
object.
:Raises: If the response contains an error message.
"""
status = response.get('status', None)
if status is None or status == ErrorCode.SUCCESS:
return
value = None
message = response.get("message", "")
screen = response.get("screen", "")
stacktrace = None
if isinstance(status, int):
value_json = response.get('value', None)
if value_json and isinstance(value_json, basestring):
import json
try:
value = json.loads(value_json)
if len(value.keys()) == 1:
value = value['value']
status = value.get('error', None)
if status is None:
status = value["status"]
message = value["value"]
if not isinstance(message, basestring):
value = message
message = message.get('message')
else:
message = value.get('message', None)
except ValueError:
pass
exception_class = ErrorInResponseException
if status in ErrorCode.NO_SUCH_ELEMENT:
exception_class = NoSuchElementException
elif status in ErrorCode.NO_SUCH_FRAME:
exception_class = NoSuchFrameException
elif status in ErrorCode.NO_SUCH_WINDOW:
exception_class = NoSuchWindowException
elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
exception_class = StaleElementReferenceException
elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
exception_class = ElementNotVisibleException
elif status in ErrorCode.INVALID_ELEMENT_STATE:
exception_class = InvalidElementStateException
elif status in ErrorCode.INVALID_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
exception_class = InvalidSelectorException
elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
exception_class = ElementNotSelectableException
elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
exception_class = ElementNotInteractableException
elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
exception_class = InvalidCookieDomainException
elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
exception_class = UnableToSetCookieException
elif status in ErrorCode.TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.SCRIPT_TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.UNKNOWN_ERROR:
exception_class = WebDriverException
elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
exception_class = UnexpectedAlertPresentException
elif status in ErrorCode.NO_ALERT_OPEN:
exception_class = NoAlertPresentException
elif status in ErrorCode.IME_NOT_AVAILABLE:
exception_class = ImeNotAvailableException
elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
exception_class = ImeActivationFailedException
elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
exception_class = MoveTargetOutOfBoundsException
elif status in ErrorCode.JAVASCRIPT_ERROR:
exception_class = JavascriptException
elif status in ErrorCode.SESSION_NOT_CREATED:
exception_class = SessionNotCreatedException
elif status in ErrorCode.INVALID_ARGUMENT:
exception_class = InvalidArgumentException
elif status in ErrorCode.NO_SUCH_COOKIE:
exception_class = NoSuchCookieException
elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
exception_class = ScreenshotException
elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
exception_class = ElementClickInterceptedException
elif status in ErrorCode.INSECURE_CERTIFICATE:
exception_class = InsecureCertificateException
elif status in ErrorCode.INVALID_COORDINATES:
exception_class = InvalidCoordinatesException
elif status in ErrorCode.INVALID_SESSION_ID:
exception_class = InvalidSessionIdException
elif status in ErrorCode.UNKNOWN_METHOD:
exception_class = UnknownMethodException
else:
exception_class = WebDriverException
if value == '' or value is None:
value = response['value']
if isinstance(value, basestring):
if exception_class == ErrorInResponseException:
raise exception_class(response, value)
raise exception_class(value)
if message == "" and 'message' in value:
message = value['message']
screen = None
if 'screen' in value:
screen = value['screen']
stacktrace = None
if 'stackTrace' in value and value['stackTrace']:
stacktrace = []
try:
for frame in value['stackTrace']:
line = self._value_or_default(frame, 'lineNumber', '')
file = self._value_or_default(frame, 'fileName', '<anonymous>')
if line:
file = "%s:%s" % (file, line)
meth = self._value_or_default(frame, 'methodName', '<anonymous>')
if 'className' in frame:
meth = "%s.%s" % (frame['className'], meth)
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if exception_class == ErrorInResponseException:
raise exception_class(response, message)
elif exception_class == UnexpectedAlertPresentException:
alert_text = None
if 'data' in value:
alert_text = value['data'].get('text')
elif 'alert' in value:
alert_text = value['alert'].get('text')
raise exception_class(message, screen, stacktrace, alert_text)
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=dnsNotFound&u=http%3A//splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py:242: WebDriverException
Check failure on line 0 in test-results/test.xml
github-actions / test-report-9.0.6__firefox_test_splunk_ta_example_addon_input_2
pytest ► tests.ui.test_splunk_ta_example_addon_input_2.firefox_TestInput ► test_example_input_two_valid_input_name
Failed test found in:
test-results/test.xml
Error:
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_valid_input_name>>
Raw output
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_valid_input_name>>
@pytest.fixture(scope="function", autouse=True)
def ucc_smartx_selenium_wrapper(request):
"""
Calls ucc_smartx_selenium_helper fixture
"""
if "ucc_smartx_selenium_helper" in request.fixturenames:
> request.node.selenium_helper = request.getfixturevalue(
"ucc_smartx_selenium_helper"
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:254:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_valid_input_name>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
break
except Exception as e:
last_exc = e
LOGGER.warning(
"Failed to configure the browser or login to Splunk instance for - Try={} \nTRACEBACK::{}".format(
try_number, traceback.format_exc()
)
)
else:
LOGGER.error(
"Could not connect to Browser or login to Splunk instance. Please check the logs for detailed error of each retry"
)
> raise (last_exc)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:198:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_valid_input_name>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
> selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:176:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358bde40>
browser = 'firefox', browser_version = 'latest'
splunk_web_url = 'http://splunk:8000/'
splunk_mgmt_url = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
debug = False, cred = ('admin', 'Chang3d!'), headless = False
test_case = 'firefox_test_example_input_two_valid_input_name'
def __init__(
self,
browser,
browser_version,
splunk_web_url,
splunk_mgmt_url,
debug=False,
cred=("admin", "Chang3d!"),
headless=False,
test_case=None,
):
self.splunk_web_url = splunk_web_url
self.splunk_mgmt_url = splunk_mgmt_url
self.cred = cred
self.test_case = test_case
self.skip_saucelab_job = False
if "grid" in browser:
self.skip_saucelab_job = True
debug = True
if not debug:
# Using Saucelabs
self.init_sauce_env_variables()
try:
if browser == "firefox":
if debug:
self.browser = webdriver.Firefox(
firefox_options=self.get_local_firefox_opts(headless),
log_path="selenium.log",
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_firefox_opts(
browser_version
),
)
elif browser == "chrome":
if debug:
self.browser = webdriver.Chrome(
chrome_options=self.get_local_chrome_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_chrome_opts(
browser_version
),
)
# selenium local stack
elif browser == "chrome_grid":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://chrome-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_grid":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://firefox-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
# kubernetes selenium
elif browser == "chrome_k8s":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_k8s":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
elif browser == "edge":
if debug:
self.browser = Edge(
executable_path="msedgedriver",
desired_capabilities=self.get_local_edge_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
command_executor = EdgeRemoteConnection(
"https://ondemand.saucelabs.com:443/wd/hub"
)
options = EdgeOptions()
options.use_chromium = True
self.browser = webdriver.Remote(
command_executor=command_executor,
options=options,
desired_capabilities=self.get_sauce_edge_opts(browser_version),
)
elif browser == "IE":
if debug:
self.browser = webdriver.Ie(capabilities=self.get_local_ie_opts())
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_ie_opts(browser_version),
)
elif browser == "safari":
if debug:
self.browser = webdriver.Safari()
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_safari_opts(
browser_version
),
)
else:
raise Exception(
"No valid browser found.! expected=[firefox, chrome, safari], got={}".format(
browser
)
)
except Exception as e:
raise e
try:
self.browser_session = self.browser.session_id
> self.login_to_splunk(*self.cred)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:207:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358bde40>
cred = ('admin', 'Chang3d!')
def login_to_splunk(self, *cred):
try:
> login_page = LoginPage(self)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358bdfc0>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358bde40>
def __init__(self, ucc_smartx_selenium_helper):
"""
:param ucc_smartx_selenium_helper: Fixture with selenium driver, urls(web, mgmt) and session key
"""
> super().__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper=None)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/login.py:33:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358bdfc0>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358bde40>
ucc_smartx_rest_helper = None, open_page = True
def __init__(
self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page=True
):
"""
:param ucc_smartx_selenium_helper: The selenium webdriver
:param ucc_smartx_rest_helper: Splunk web & management url. {"web": , "mgmt": }
"""
if ucc_smartx_selenium_helper:
self.browser = ucc_smartx_selenium_helper.browser
self.splunk_web_url = ucc_smartx_selenium_helper.splunk_web_url
if open_page:
> self.open()
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358bdfc0>
def open(self):
"""
Abstract Method. Open the page
"""
> self.browser.get(self.splunk_web_url)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="7082a211663347aaaecb19f0d137f03d")>
url = 'http://splunk:8000/'
def get(self, url):
"""
Loads a web page in the current browser session.
"""
> self.execute(Command.GET, {'url': url})
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:333:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="7082a211663347aaaecb19f0d137f03d")>
driver_command = 'get', params = {'url': 'http://splunk:8000/'}
def execute(self, driver_command, params=None):
"""
Sends a command to be executed by a command.CommandExecutor.
:Args:
- driver_command: The name of the command to execute as a string.
- params: A dictionary of named parameters to send with the command.
:Returns:
The command's JSON response loaded into a dictionary object.
"""
if self.session_id is not None:
if not params:
params = {'sessionId': self.session_id}
elif 'sessionId' not in params:
params['sessionId'] = self.session_id
params = self._wrap_value(params)
response = self.command_executor.execute(driver_command, params)
if response:
> self.error_handler.check_response(response)
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:321:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fa1358be0e0>
response = {'status': 500, 'value': '{"value": {"stacktrace": "RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8...splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.", "error": "unknown error"}}'}
def check_response(self, response):
"""
Checks that a JSON response from the WebDriver does not have an error.
:Args:
- response - The JSON response from the WebDriver server as a dictionary
object.
:Raises: If the response contains an error message.
"""
status = response.get('status', None)
if status is None or status == ErrorCode.SUCCESS:
return
value = None
message = response.get("message", "")
screen = response.get("screen", "")
stacktrace = None
if isinstance(status, int):
value_json = response.get('value', None)
if value_json and isinstance(value_json, basestring):
import json
try:
value = json.loads(value_json)
if len(value.keys()) == 1:
value = value['value']
status = value.get('error', None)
if status is None:
status = value["status"]
message = value["value"]
if not isinstance(message, basestring):
value = message
message = message.get('message')
else:
message = value.get('message', None)
except ValueError:
pass
exception_class = ErrorInResponseException
if status in ErrorCode.NO_SUCH_ELEMENT:
exception_class = NoSuchElementException
elif status in ErrorCode.NO_SUCH_FRAME:
exception_class = NoSuchFrameException
elif status in ErrorCode.NO_SUCH_WINDOW:
exception_class = NoSuchWindowException
elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
exception_class = StaleElementReferenceException
elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
exception_class = ElementNotVisibleException
elif status in ErrorCode.INVALID_ELEMENT_STATE:
exception_class = InvalidElementStateException
elif status in ErrorCode.INVALID_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
exception_class = InvalidSelectorException
elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
exception_class = ElementNotSelectableException
elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
exception_class = ElementNotInteractableException
elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
exception_class = InvalidCookieDomainException
elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
exception_class = UnableToSetCookieException
elif status in ErrorCode.TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.SCRIPT_TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.UNKNOWN_ERROR:
exception_class = WebDriverException
elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
exception_class = UnexpectedAlertPresentException
elif status in ErrorCode.NO_ALERT_OPEN:
exception_class = NoAlertPresentException
elif status in ErrorCode.IME_NOT_AVAILABLE:
exception_class = ImeNotAvailableException
elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
exception_class = ImeActivationFailedException
elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
exception_class = MoveTargetOutOfBoundsException
elif status in ErrorCode.JAVASCRIPT_ERROR:
exception_class = JavascriptException
elif status in ErrorCode.SESSION_NOT_CREATED:
exception_class = SessionNotCreatedException
elif status in ErrorCode.INVALID_ARGUMENT:
exception_class = InvalidArgumentException
elif status in ErrorCode.NO_SUCH_COOKIE:
exception_class = NoSuchCookieException
elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
exception_class = ScreenshotException
elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
exception_class = ElementClickInterceptedException
elif status in ErrorCode.INSECURE_CERTIFICATE:
exception_class = InsecureCertificateException
elif status in ErrorCode.INVALID_COORDINATES:
exception_class = InvalidCoordinatesException
elif status in ErrorCode.INVALID_SESSION_ID:
exception_class = InvalidSessionIdException
elif status in ErrorCode.UNKNOWN_METHOD:
exception_class = UnknownMethodException
else:
exception_class = WebDriverException
if value == '' or value is None:
value = response['value']
if isinstance(value, basestring):
if exception_class == ErrorInResponseException:
raise exception_class(response, value)
raise exception_class(value)
if message == "" and 'message' in value:
message = value['message']
screen = None
if 'screen' in value:
screen = value['screen']
stacktrace = None
if 'stackTrace' in value and value['stackTrace']:
stacktrace = []
try:
for frame in value['stackTrace']:
line = self._value_or_default(frame, 'lineNumber', '')
file = self._value_or_default(frame, 'fileName', '<anonymous>')
if line:
file = "%s:%s" % (file, line)
meth = self._value_or_default(frame, 'methodName', '<anonymous>')
if 'className' in frame:
meth = "%s.%s" % (frame['className'], meth)
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if exception_class == ErrorInResponseException:
raise exception_class(response, message)
elif exception_class == UnexpectedAlertPresentException:
alert_text = None
if 'data' in value:
alert_text = value['data'].get('text')
elif 'alert' in value:
alert_text = value['alert'].get('text')
raise exception_class(message, screen, stacktrace, alert_text)
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=dnsNotFound&u=http%3A//splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py:242: WebDriverException
Check failure on line 0 in test-results/test.xml
github-actions / test-report-9.0.6__firefox_test_splunk_ta_example_addon_input_2
pytest ► tests.ui.test_splunk_ta_example_addon_input_2.firefox_TestInput ► test_example_input_two_required_field_interval
Failed test found in:
test-results/test.xml
Error:
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_interval>>
Raw output
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_interval>>
@pytest.fixture(scope="function", autouse=True)
def ucc_smartx_selenium_wrapper(request):
"""
Calls ucc_smartx_selenium_helper fixture
"""
if "ucc_smartx_selenium_helper" in request.fixturenames:
> request.node.selenium_helper = request.getfixturevalue(
"ucc_smartx_selenium_helper"
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:254:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_required_field_interval>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
break
except Exception as e:
last_exc = e
LOGGER.warning(
"Failed to configure the browser or login to Splunk instance for - Try={} \nTRACEBACK::{}".format(
try_number, traceback.format_exc()
)
)
else:
LOGGER.error(
"Could not connect to Browser or login to Splunk instance. Please check the logs for detailed error of each retry"
)
> raise (last_exc)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:198:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_required_field_interval>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
> selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:176:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135ad3f70>
browser = 'firefox', browser_version = 'latest'
splunk_web_url = 'http://splunk:8000/'
splunk_mgmt_url = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
debug = False, cred = ('admin', 'Chang3d!'), headless = False
test_case = 'firefox_test_example_input_two_required_field_interval'
def __init__(
self,
browser,
browser_version,
splunk_web_url,
splunk_mgmt_url,
debug=False,
cred=("admin", "Chang3d!"),
headless=False,
test_case=None,
):
self.splunk_web_url = splunk_web_url
self.splunk_mgmt_url = splunk_mgmt_url
self.cred = cred
self.test_case = test_case
self.skip_saucelab_job = False
if "grid" in browser:
self.skip_saucelab_job = True
debug = True
if not debug:
# Using Saucelabs
self.init_sauce_env_variables()
try:
if browser == "firefox":
if debug:
self.browser = webdriver.Firefox(
firefox_options=self.get_local_firefox_opts(headless),
log_path="selenium.log",
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_firefox_opts(
browser_version
),
)
elif browser == "chrome":
if debug:
self.browser = webdriver.Chrome(
chrome_options=self.get_local_chrome_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_chrome_opts(
browser_version
),
)
# selenium local stack
elif browser == "chrome_grid":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://chrome-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_grid":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://firefox-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
# kubernetes selenium
elif browser == "chrome_k8s":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_k8s":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
elif browser == "edge":
if debug:
self.browser = Edge(
executable_path="msedgedriver",
desired_capabilities=self.get_local_edge_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
command_executor = EdgeRemoteConnection(
"https://ondemand.saucelabs.com:443/wd/hub"
)
options = EdgeOptions()
options.use_chromium = True
self.browser = webdriver.Remote(
command_executor=command_executor,
options=options,
desired_capabilities=self.get_sauce_edge_opts(browser_version),
)
elif browser == "IE":
if debug:
self.browser = webdriver.Ie(capabilities=self.get_local_ie_opts())
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_ie_opts(browser_version),
)
elif browser == "safari":
if debug:
self.browser = webdriver.Safari()
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_safari_opts(
browser_version
),
)
else:
raise Exception(
"No valid browser found.! expected=[firefox, chrome, safari], got={}".format(
browser
)
)
except Exception as e:
raise e
try:
self.browser_session = self.browser.session_id
> self.login_to_splunk(*self.cred)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:207:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135ad3f70>
cred = ('admin', 'Chang3d!')
def login_to_splunk(self, *cred):
try:
> login_page = LoginPage(self)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa135ad06d0>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135ad3f70>
def __init__(self, ucc_smartx_selenium_helper):
"""
:param ucc_smartx_selenium_helper: Fixture with selenium driver, urls(web, mgmt) and session key
"""
> super().__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper=None)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/login.py:33:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa135ad06d0>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135ad3f70>
ucc_smartx_rest_helper = None, open_page = True
def __init__(
self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page=True
):
"""
:param ucc_smartx_selenium_helper: The selenium webdriver
:param ucc_smartx_rest_helper: Splunk web & management url. {"web": , "mgmt": }
"""
if ucc_smartx_selenium_helper:
self.browser = ucc_smartx_selenium_helper.browser
self.splunk_web_url = ucc_smartx_selenium_helper.splunk_web_url
if open_page:
> self.open()
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa135ad06d0>
def open(self):
"""
Abstract Method. Open the page
"""
> self.browser.get(self.splunk_web_url)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="9f7e75006e7a4b6ba2045941f6428334")>
url = 'http://splunk:8000/'
def get(self, url):
"""
Loads a web page in the current browser session.
"""
> self.execute(Command.GET, {'url': url})
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:333:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="9f7e75006e7a4b6ba2045941f6428334")>
driver_command = 'get', params = {'url': 'http://splunk:8000/'}
def execute(self, driver_command, params=None):
"""
Sends a command to be executed by a command.CommandExecutor.
:Args:
- driver_command: The name of the command to execute as a string.
- params: A dictionary of named parameters to send with the command.
:Returns:
The command's JSON response loaded into a dictionary object.
"""
if self.session_id is not None:
if not params:
params = {'sessionId': self.session_id}
elif 'sessionId' not in params:
params['sessionId'] = self.session_id
params = self._wrap_value(params)
response = self.command_executor.execute(driver_command, params)
if response:
> self.error_handler.check_response(response)
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:321:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fa135ad0d90>
response = {'status': 500, 'value': '{"value": {"stacktrace": "RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8...splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.", "error": "unknown error"}}'}
def check_response(self, response):
"""
Checks that a JSON response from the WebDriver does not have an error.
:Args:
- response - The JSON response from the WebDriver server as a dictionary
object.
:Raises: If the response contains an error message.
"""
status = response.get('status', None)
if status is None or status == ErrorCode.SUCCESS:
return
value = None
message = response.get("message", "")
screen = response.get("screen", "")
stacktrace = None
if isinstance(status, int):
value_json = response.get('value', None)
if value_json and isinstance(value_json, basestring):
import json
try:
value = json.loads(value_json)
if len(value.keys()) == 1:
value = value['value']
status = value.get('error', None)
if status is None:
status = value["status"]
message = value["value"]
if not isinstance(message, basestring):
value = message
message = message.get('message')
else:
message = value.get('message', None)
except ValueError:
pass
exception_class = ErrorInResponseException
if status in ErrorCode.NO_SUCH_ELEMENT:
exception_class = NoSuchElementException
elif status in ErrorCode.NO_SUCH_FRAME:
exception_class = NoSuchFrameException
elif status in ErrorCode.NO_SUCH_WINDOW:
exception_class = NoSuchWindowException
elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
exception_class = StaleElementReferenceException
elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
exception_class = ElementNotVisibleException
elif status in ErrorCode.INVALID_ELEMENT_STATE:
exception_class = InvalidElementStateException
elif status in ErrorCode.INVALID_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
exception_class = InvalidSelectorException
elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
exception_class = ElementNotSelectableException
elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
exception_class = ElementNotInteractableException
elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
exception_class = InvalidCookieDomainException
elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
exception_class = UnableToSetCookieException
elif status in ErrorCode.TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.SCRIPT_TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.UNKNOWN_ERROR:
exception_class = WebDriverException
elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
exception_class = UnexpectedAlertPresentException
elif status in ErrorCode.NO_ALERT_OPEN:
exception_class = NoAlertPresentException
elif status in ErrorCode.IME_NOT_AVAILABLE:
exception_class = ImeNotAvailableException
elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
exception_class = ImeActivationFailedException
elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
exception_class = MoveTargetOutOfBoundsException
elif status in ErrorCode.JAVASCRIPT_ERROR:
exception_class = JavascriptException
elif status in ErrorCode.SESSION_NOT_CREATED:
exception_class = SessionNotCreatedException
elif status in ErrorCode.INVALID_ARGUMENT:
exception_class = InvalidArgumentException
elif status in ErrorCode.NO_SUCH_COOKIE:
exception_class = NoSuchCookieException
elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
exception_class = ScreenshotException
elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
exception_class = ElementClickInterceptedException
elif status in ErrorCode.INSECURE_CERTIFICATE:
exception_class = InsecureCertificateException
elif status in ErrorCode.INVALID_COORDINATES:
exception_class = InvalidCoordinatesException
elif status in ErrorCode.INVALID_SESSION_ID:
exception_class = InvalidSessionIdException
elif status in ErrorCode.UNKNOWN_METHOD:
exception_class = UnknownMethodException
else:
exception_class = WebDriverException
if value == '' or value is None:
value = response['value']
if isinstance(value, basestring):
if exception_class == ErrorInResponseException:
raise exception_class(response, value)
raise exception_class(value)
if message == "" and 'message' in value:
message = value['message']
screen = None
if 'screen' in value:
screen = value['screen']
stacktrace = None
if 'stackTrace' in value and value['stackTrace']:
stacktrace = []
try:
for frame in value['stackTrace']:
line = self._value_or_default(frame, 'lineNumber', '')
file = self._value_or_default(frame, 'fileName', '<anonymous>')
if line:
file = "%s:%s" % (file, line)
meth = self._value_or_default(frame, 'methodName', '<anonymous>')
if 'className' in frame:
meth = "%s.%s" % (frame['className'], meth)
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if exception_class == ErrorInResponseException:
raise exception_class(response, message)
elif exception_class == UnexpectedAlertPresentException:
alert_text = None
if 'data' in value:
alert_text = value['data'].get('text')
elif 'alert' in value:
alert_text = value['alert'].get('text')
raise exception_class(message, screen, stacktrace, alert_text)
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=dnsNotFound&u=http%3A//splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py:242: WebDriverException
Check failure on line 0 in test-results/test.xml
github-actions / test-report-9.0.6__firefox_test_splunk_ta_example_addon_input_2
pytest ► tests.ui.test_splunk_ta_example_addon_input_2.firefox_TestInput ► test_example_input_two_valid_input_interval
Failed test found in:
test-results/test.xml
Error:
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_valid_input_interval>>
Raw output
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_valid_input_interval>>
@pytest.fixture(scope="function", autouse=True)
def ucc_smartx_selenium_wrapper(request):
"""
Calls ucc_smartx_selenium_helper fixture
"""
if "ucc_smartx_selenium_helper" in request.fixturenames:
> request.node.selenium_helper = request.getfixturevalue(
"ucc_smartx_selenium_helper"
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:254:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_valid_input_interval>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
break
except Exception as e:
last_exc = e
LOGGER.warning(
"Failed to configure the browser or login to Splunk instance for - Try={} \nTRACEBACK::{}".format(
try_number, traceback.format_exc()
)
)
else:
LOGGER.error(
"Could not connect to Browser or login to Splunk instance. Please check the logs for detailed error of each retry"
)
> raise (last_exc)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:198:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_valid_input_interval>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
> selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:176:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358b2d40>
browser = 'firefox', browser_version = 'latest'
splunk_web_url = 'http://splunk:8000/'
splunk_mgmt_url = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
debug = False, cred = ('admin', 'Chang3d!'), headless = False
test_case = 'firefox_test_example_input_two_valid_input_interval'
def __init__(
self,
browser,
browser_version,
splunk_web_url,
splunk_mgmt_url,
debug=False,
cred=("admin", "Chang3d!"),
headless=False,
test_case=None,
):
self.splunk_web_url = splunk_web_url
self.splunk_mgmt_url = splunk_mgmt_url
self.cred = cred
self.test_case = test_case
self.skip_saucelab_job = False
if "grid" in browser:
self.skip_saucelab_job = True
debug = True
if not debug:
# Using Saucelabs
self.init_sauce_env_variables()
try:
if browser == "firefox":
if debug:
self.browser = webdriver.Firefox(
firefox_options=self.get_local_firefox_opts(headless),
log_path="selenium.log",
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_firefox_opts(
browser_version
),
)
elif browser == "chrome":
if debug:
self.browser = webdriver.Chrome(
chrome_options=self.get_local_chrome_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_chrome_opts(
browser_version
),
)
# selenium local stack
elif browser == "chrome_grid":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://chrome-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_grid":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://firefox-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
# kubernetes selenium
elif browser == "chrome_k8s":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_k8s":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
elif browser == "edge":
if debug:
self.browser = Edge(
executable_path="msedgedriver",
desired_capabilities=self.get_local_edge_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
command_executor = EdgeRemoteConnection(
"https://ondemand.saucelabs.com:443/wd/hub"
)
options = EdgeOptions()
options.use_chromium = True
self.browser = webdriver.Remote(
command_executor=command_executor,
options=options,
desired_capabilities=self.get_sauce_edge_opts(browser_version),
)
elif browser == "IE":
if debug:
self.browser = webdriver.Ie(capabilities=self.get_local_ie_opts())
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_ie_opts(browser_version),
)
elif browser == "safari":
if debug:
self.browser = webdriver.Safari()
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_safari_opts(
browser_version
),
)
else:
raise Exception(
"No valid browser found.! expected=[firefox, chrome, safari], got={}".format(
browser
)
)
except Exception as e:
raise e
try:
self.browser_session = self.browser.session_id
> self.login_to_splunk(*self.cred)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:207:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358b2d40>
cred = ('admin', 'Chang3d!')
def login_to_splunk(self, *cred):
try:
> login_page = LoginPage(self)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358b2a40>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358b2d40>
def __init__(self, ucc_smartx_selenium_helper):
"""
:param ucc_smartx_selenium_helper: Fixture with selenium driver, urls(web, mgmt) and session key
"""
> super().__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper=None)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/login.py:33:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358b2a40>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358b2d40>
ucc_smartx_rest_helper = None, open_page = True
def __init__(
self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page=True
):
"""
:param ucc_smartx_selenium_helper: The selenium webdriver
:param ucc_smartx_rest_helper: Splunk web & management url. {"web": , "mgmt": }
"""
if ucc_smartx_selenium_helper:
self.browser = ucc_smartx_selenium_helper.browser
self.splunk_web_url = ucc_smartx_selenium_helper.splunk_web_url
if open_page:
> self.open()
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358b2a40>
def open(self):
"""
Abstract Method. Open the page
"""
> self.browser.get(self.splunk_web_url)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="0b24357bd4254f1cbe73756d93d1bf0d")>
url = 'http://splunk:8000/'
def get(self, url):
"""
Loads a web page in the current browser session.
"""
> self.execute(Command.GET, {'url': url})
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:333:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="0b24357bd4254f1cbe73756d93d1bf0d")>
driver_command = 'get', params = {'url': 'http://splunk:8000/'}
def execute(self, driver_command, params=None):
"""
Sends a command to be executed by a command.CommandExecutor.
:Args:
- driver_command: The name of the command to execute as a string.
- params: A dictionary of named parameters to send with the command.
:Returns:
The command's JSON response loaded into a dictionary object.
"""
if self.session_id is not None:
if not params:
params = {'sessionId': self.session_id}
elif 'sessionId' not in params:
params['sessionId'] = self.session_id
params = self._wrap_value(params)
response = self.command_executor.execute(driver_command, params)
if response:
> self.error_handler.check_response(response)
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:321:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fa1358b29b0>
response = {'status': 500, 'value': '{"value": {"stacktrace": "RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8...splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.", "error": "unknown error"}}'}
def check_response(self, response):
"""
Checks that a JSON response from the WebDriver does not have an error.
:Args:
- response - The JSON response from the WebDriver server as a dictionary
object.
:Raises: If the response contains an error message.
"""
status = response.get('status', None)
if status is None or status == ErrorCode.SUCCESS:
return
value = None
message = response.get("message", "")
screen = response.get("screen", "")
stacktrace = None
if isinstance(status, int):
value_json = response.get('value', None)
if value_json and isinstance(value_json, basestring):
import json
try:
value = json.loads(value_json)
if len(value.keys()) == 1:
value = value['value']
status = value.get('error', None)
if status is None:
status = value["status"]
message = value["value"]
if not isinstance(message, basestring):
value = message
message = message.get('message')
else:
message = value.get('message', None)
except ValueError:
pass
exception_class = ErrorInResponseException
if status in ErrorCode.NO_SUCH_ELEMENT:
exception_class = NoSuchElementException
elif status in ErrorCode.NO_SUCH_FRAME:
exception_class = NoSuchFrameException
elif status in ErrorCode.NO_SUCH_WINDOW:
exception_class = NoSuchWindowException
elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
exception_class = StaleElementReferenceException
elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
exception_class = ElementNotVisibleException
elif status in ErrorCode.INVALID_ELEMENT_STATE:
exception_class = InvalidElementStateException
elif status in ErrorCode.INVALID_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
exception_class = InvalidSelectorException
elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
exception_class = ElementNotSelectableException
elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
exception_class = ElementNotInteractableException
elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
exception_class = InvalidCookieDomainException
elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
exception_class = UnableToSetCookieException
elif status in ErrorCode.TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.SCRIPT_TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.UNKNOWN_ERROR:
exception_class = WebDriverException
elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
exception_class = UnexpectedAlertPresentException
elif status in ErrorCode.NO_ALERT_OPEN:
exception_class = NoAlertPresentException
elif status in ErrorCode.IME_NOT_AVAILABLE:
exception_class = ImeNotAvailableException
elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
exception_class = ImeActivationFailedException
elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
exception_class = MoveTargetOutOfBoundsException
elif status in ErrorCode.JAVASCRIPT_ERROR:
exception_class = JavascriptException
elif status in ErrorCode.SESSION_NOT_CREATED:
exception_class = SessionNotCreatedException
elif status in ErrorCode.INVALID_ARGUMENT:
exception_class = InvalidArgumentException
elif status in ErrorCode.NO_SUCH_COOKIE:
exception_class = NoSuchCookieException
elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
exception_class = ScreenshotException
elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
exception_class = ElementClickInterceptedException
elif status in ErrorCode.INSECURE_CERTIFICATE:
exception_class = InsecureCertificateException
elif status in ErrorCode.INVALID_COORDINATES:
exception_class = InvalidCoordinatesException
elif status in ErrorCode.INVALID_SESSION_ID:
exception_class = InvalidSessionIdException
elif status in ErrorCode.UNKNOWN_METHOD:
exception_class = UnknownMethodException
else:
exception_class = WebDriverException
if value == '' or value is None:
value = response['value']
if isinstance(value, basestring):
if exception_class == ErrorInResponseException:
raise exception_class(response, value)
raise exception_class(value)
if message == "" and 'message' in value:
message = value['message']
screen = None
if 'screen' in value:
screen = value['screen']
stacktrace = None
if 'stackTrace' in value and value['stackTrace']:
stacktrace = []
try:
for frame in value['stackTrace']:
line = self._value_or_default(frame, 'lineNumber', '')
file = self._value_or_default(frame, 'fileName', '<anonymous>')
if line:
file = "%s:%s" % (file, line)
meth = self._value_or_default(frame, 'methodName', '<anonymous>')
if 'className' in frame:
meth = "%s.%s" % (frame['className'], meth)
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if exception_class == ErrorInResponseException:
raise exception_class(response, message)
elif exception_class == UnexpectedAlertPresentException:
alert_text = None
if 'data' in value:
alert_text = value['data'].get('text')
elif 'alert' in value:
alert_text = value['alert'].get('text')
raise exception_class(message, screen, stacktrace, alert_text)
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=dnsNotFound&u=http%3A//splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py:242: WebDriverException
Check failure on line 0 in test-results/test.xml
github-actions / test-report-9.0.6__firefox_test_splunk_ta_example_addon_input_2
pytest ► tests.ui.test_splunk_ta_example_addon_input_2.firefox_TestInput ► test_example_input_two_required_field_index
Failed test found in:
test-results/test.xml
Error:
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_index>>
Raw output
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_index>>
@pytest.fixture(scope="function", autouse=True)
def ucc_smartx_selenium_wrapper(request):
"""
Calls ucc_smartx_selenium_helper fixture
"""
if "ucc_smartx_selenium_helper" in request.fixturenames:
> request.node.selenium_helper = request.getfixturevalue(
"ucc_smartx_selenium_helper"
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:254:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_required_field_index>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
break
except Exception as e:
last_exc = e
LOGGER.warning(
"Failed to configure the browser or login to Splunk instance for - Try={} \nTRACEBACK::{}".format(
try_number, traceback.format_exc()
)
)
else:
LOGGER.error(
"Could not connect to Browser or login to Splunk instance. Please check the logs for detailed error of each retry"
)
> raise (last_exc)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:198:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_required_field_index>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
> selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:176:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358bef80>
browser = 'firefox', browser_version = 'latest'
splunk_web_url = 'http://splunk:8000/'
splunk_mgmt_url = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
debug = False, cred = ('admin', 'Chang3d!'), headless = False
test_case = 'firefox_test_example_input_two_required_field_index'
def __init__(
self,
browser,
browser_version,
splunk_web_url,
splunk_mgmt_url,
debug=False,
cred=("admin", "Chang3d!"),
headless=False,
test_case=None,
):
self.splunk_web_url = splunk_web_url
self.splunk_mgmt_url = splunk_mgmt_url
self.cred = cred
self.test_case = test_case
self.skip_saucelab_job = False
if "grid" in browser:
self.skip_saucelab_job = True
debug = True
if not debug:
# Using Saucelabs
self.init_sauce_env_variables()
try:
if browser == "firefox":
if debug:
self.browser = webdriver.Firefox(
firefox_options=self.get_local_firefox_opts(headless),
log_path="selenium.log",
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_firefox_opts(
browser_version
),
)
elif browser == "chrome":
if debug:
self.browser = webdriver.Chrome(
chrome_options=self.get_local_chrome_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_chrome_opts(
browser_version
),
)
# selenium local stack
elif browser == "chrome_grid":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://chrome-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_grid":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://firefox-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
# kubernetes selenium
elif browser == "chrome_k8s":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_k8s":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
elif browser == "edge":
if debug:
self.browser = Edge(
executable_path="msedgedriver",
desired_capabilities=self.get_local_edge_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
command_executor = EdgeRemoteConnection(
"https://ondemand.saucelabs.com:443/wd/hub"
)
options = EdgeOptions()
options.use_chromium = True
self.browser = webdriver.Remote(
command_executor=command_executor,
options=options,
desired_capabilities=self.get_sauce_edge_opts(browser_version),
)
elif browser == "IE":
if debug:
self.browser = webdriver.Ie(capabilities=self.get_local_ie_opts())
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_ie_opts(browser_version),
)
elif browser == "safari":
if debug:
self.browser = webdriver.Safari()
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_safari_opts(
browser_version
),
)
else:
raise Exception(
"No valid browser found.! expected=[firefox, chrome, safari], got={}".format(
browser
)
)
except Exception as e:
raise e
try:
self.browser_session = self.browser.session_id
> self.login_to_splunk(*self.cred)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:207:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358bef80>
cred = ('admin', 'Chang3d!')
def login_to_splunk(self, *cred):
try:
> login_page = LoginPage(self)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358be860>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358bef80>
def __init__(self, ucc_smartx_selenium_helper):
"""
:param ucc_smartx_selenium_helper: Fixture with selenium driver, urls(web, mgmt) and session key
"""
> super().__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper=None)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/login.py:33:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358be860>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358bef80>
ucc_smartx_rest_helper = None, open_page = True
def __init__(
self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page=True
):
"""
:param ucc_smartx_selenium_helper: The selenium webdriver
:param ucc_smartx_rest_helper: Splunk web & management url. {"web": , "mgmt": }
"""
if ucc_smartx_selenium_helper:
self.browser = ucc_smartx_selenium_helper.browser
self.splunk_web_url = ucc_smartx_selenium_helper.splunk_web_url
if open_page:
> self.open()
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358be860>
def open(self):
"""
Abstract Method. Open the page
"""
> self.browser.get(self.splunk_web_url)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="db6a8f1d90dc4d8f8ce701f5942cbd3b")>
url = 'http://splunk:8000/'
def get(self, url):
"""
Loads a web page in the current browser session.
"""
> self.execute(Command.GET, {'url': url})
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:333:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="db6a8f1d90dc4d8f8ce701f5942cbd3b")>
driver_command = 'get', params = {'url': 'http://splunk:8000/'}
def execute(self, driver_command, params=None):
"""
Sends a command to be executed by a command.CommandExecutor.
:Args:
- driver_command: The name of the command to execute as a string.
- params: A dictionary of named parameters to send with the command.
:Returns:
The command's JSON response loaded into a dictionary object.
"""
if self.session_id is not None:
if not params:
params = {'sessionId': self.session_id}
elif 'sessionId' not in params:
params['sessionId'] = self.session_id
params = self._wrap_value(params)
response = self.command_executor.execute(driver_command, params)
if response:
> self.error_handler.check_response(response)
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:321:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fa1358be080>
response = {'status': 500, 'value': '{"value": {"stacktrace": "RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8...splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.", "error": "unknown error"}}'}
def check_response(self, response):
"""
Checks that a JSON response from the WebDriver does not have an error.
:Args:
- response - The JSON response from the WebDriver server as a dictionary
object.
:Raises: If the response contains an error message.
"""
status = response.get('status', None)
if status is None or status == ErrorCode.SUCCESS:
return
value = None
message = response.get("message", "")
screen = response.get("screen", "")
stacktrace = None
if isinstance(status, int):
value_json = response.get('value', None)
if value_json and isinstance(value_json, basestring):
import json
try:
value = json.loads(value_json)
if len(value.keys()) == 1:
value = value['value']
status = value.get('error', None)
if status is None:
status = value["status"]
message = value["value"]
if not isinstance(message, basestring):
value = message
message = message.get('message')
else:
message = value.get('message', None)
except ValueError:
pass
exception_class = ErrorInResponseException
if status in ErrorCode.NO_SUCH_ELEMENT:
exception_class = NoSuchElementException
elif status in ErrorCode.NO_SUCH_FRAME:
exception_class = NoSuchFrameException
elif status in ErrorCode.NO_SUCH_WINDOW:
exception_class = NoSuchWindowException
elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
exception_class = StaleElementReferenceException
elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
exception_class = ElementNotVisibleException
elif status in ErrorCode.INVALID_ELEMENT_STATE:
exception_class = InvalidElementStateException
elif status in ErrorCode.INVALID_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
exception_class = InvalidSelectorException
elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
exception_class = ElementNotSelectableException
elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
exception_class = ElementNotInteractableException
elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
exception_class = InvalidCookieDomainException
elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
exception_class = UnableToSetCookieException
elif status in ErrorCode.TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.SCRIPT_TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.UNKNOWN_ERROR:
exception_class = WebDriverException
elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
exception_class = UnexpectedAlertPresentException
elif status in ErrorCode.NO_ALERT_OPEN:
exception_class = NoAlertPresentException
elif status in ErrorCode.IME_NOT_AVAILABLE:
exception_class = ImeNotAvailableException
elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
exception_class = ImeActivationFailedException
elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
exception_class = MoveTargetOutOfBoundsException
elif status in ErrorCode.JAVASCRIPT_ERROR:
exception_class = JavascriptException
elif status in ErrorCode.SESSION_NOT_CREATED:
exception_class = SessionNotCreatedException
elif status in ErrorCode.INVALID_ARGUMENT:
exception_class = InvalidArgumentException
elif status in ErrorCode.NO_SUCH_COOKIE:
exception_class = NoSuchCookieException
elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
exception_class = ScreenshotException
elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
exception_class = ElementClickInterceptedException
elif status in ErrorCode.INSECURE_CERTIFICATE:
exception_class = InsecureCertificateException
elif status in ErrorCode.INVALID_COORDINATES:
exception_class = InvalidCoordinatesException
elif status in ErrorCode.INVALID_SESSION_ID:
exception_class = InvalidSessionIdException
elif status in ErrorCode.UNKNOWN_METHOD:
exception_class = UnknownMethodException
else:
exception_class = WebDriverException
if value == '' or value is None:
value = response['value']
if isinstance(value, basestring):
if exception_class == ErrorInResponseException:
raise exception_class(response, value)
raise exception_class(value)
if message == "" and 'message' in value:
message = value['message']
screen = None
if 'screen' in value:
screen = value['screen']
stacktrace = None
if 'stackTrace' in value and value['stackTrace']:
stacktrace = []
try:
for frame in value['stackTrace']:
line = self._value_or_default(frame, 'lineNumber', '')
file = self._value_or_default(frame, 'fileName', '<anonymous>')
if line:
file = "%s:%s" % (file, line)
meth = self._value_or_default(frame, 'methodName', '<anonymous>')
if 'className' in frame:
meth = "%s.%s" % (frame['className'], meth)
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if exception_class == ErrorInResponseException:
raise exception_class(response, message)
elif exception_class == UnexpectedAlertPresentException:
alert_text = None
if 'data' in value:
alert_text = value['data'].get('text')
elif 'alert' in value:
alert_text = value['alert'].get('text')
raise exception_class(message, screen, stacktrace, alert_text)
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=dnsNotFound&u=http%3A//splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py:242: WebDriverException
Check failure on line 0 in test-results/test.xml
github-actions / test-report-9.0.6__firefox_test_splunk_ta_example_addon_input_2
pytest ► tests.ui.test_splunk_ta_example_addon_input_2.firefox_TestInput ► test_example_input_two_default_value_index
Failed test found in:
test-results/test.xml
Error:
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_default_value_index>>
Raw output
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_default_value_index>>
@pytest.fixture(scope="function", autouse=True)
def ucc_smartx_selenium_wrapper(request):
"""
Calls ucc_smartx_selenium_helper fixture
"""
if "ucc_smartx_selenium_helper" in request.fixturenames:
> request.node.selenium_helper = request.getfixturevalue(
"ucc_smartx_selenium_helper"
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:254:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_default_value_index>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
break
except Exception as e:
last_exc = e
LOGGER.warning(
"Failed to configure the browser or login to Splunk instance for - Try={} \nTRACEBACK::{}".format(
try_number, traceback.format_exc()
)
)
else:
LOGGER.error(
"Could not connect to Browser or login to Splunk instance. Please check the logs for detailed error of each retry"
)
> raise (last_exc)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:198:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_default_value_index>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
> selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:176:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135b5e170>
browser = 'firefox', browser_version = 'latest'
splunk_web_url = 'http://splunk:8000/'
splunk_mgmt_url = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
debug = False, cred = ('admin', 'Chang3d!'), headless = False
test_case = 'firefox_test_example_input_two_default_value_index'
def __init__(
self,
browser,
browser_version,
splunk_web_url,
splunk_mgmt_url,
debug=False,
cred=("admin", "Chang3d!"),
headless=False,
test_case=None,
):
self.splunk_web_url = splunk_web_url
self.splunk_mgmt_url = splunk_mgmt_url
self.cred = cred
self.test_case = test_case
self.skip_saucelab_job = False
if "grid" in browser:
self.skip_saucelab_job = True
debug = True
if not debug:
# Using Saucelabs
self.init_sauce_env_variables()
try:
if browser == "firefox":
if debug:
self.browser = webdriver.Firefox(
firefox_options=self.get_local_firefox_opts(headless),
log_path="selenium.log",
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_firefox_opts(
browser_version
),
)
elif browser == "chrome":
if debug:
self.browser = webdriver.Chrome(
chrome_options=self.get_local_chrome_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_chrome_opts(
browser_version
),
)
# selenium local stack
elif browser == "chrome_grid":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://chrome-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_grid":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://firefox-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
# kubernetes selenium
elif browser == "chrome_k8s":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_k8s":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
elif browser == "edge":
if debug:
self.browser = Edge(
executable_path="msedgedriver",
desired_capabilities=self.get_local_edge_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
command_executor = EdgeRemoteConnection(
"https://ondemand.saucelabs.com:443/wd/hub"
)
options = EdgeOptions()
options.use_chromium = True
self.browser = webdriver.Remote(
command_executor=command_executor,
options=options,
desired_capabilities=self.get_sauce_edge_opts(browser_version),
)
elif browser == "IE":
if debug:
self.browser = webdriver.Ie(capabilities=self.get_local_ie_opts())
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_ie_opts(browser_version),
)
elif browser == "safari":
if debug:
self.browser = webdriver.Safari()
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_safari_opts(
browser_version
),
)
else:
raise Exception(
"No valid browser found.! expected=[firefox, chrome, safari], got={}".format(
browser
)
)
except Exception as e:
raise e
try:
self.browser_session = self.browser.session_id
> self.login_to_splunk(*self.cred)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:207:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135b5e170>
cred = ('admin', 'Chang3d!')
def login_to_splunk(self, *cred):
try:
> login_page = LoginPage(self)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa135b5cd60>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135b5e170>
def __init__(self, ucc_smartx_selenium_helper):
"""
:param ucc_smartx_selenium_helper: Fixture with selenium driver, urls(web, mgmt) and session key
"""
> super().__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper=None)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/login.py:33:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa135b5cd60>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135b5e170>
ucc_smartx_rest_helper = None, open_page = True
def __init__(
self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page=True
):
"""
:param ucc_smartx_selenium_helper: The selenium webdriver
:param ucc_smartx_rest_helper: Splunk web & management url. {"web": , "mgmt": }
"""
if ucc_smartx_selenium_helper:
self.browser = ucc_smartx_selenium_helper.browser
self.splunk_web_url = ucc_smartx_selenium_helper.splunk_web_url
if open_page:
> self.open()
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa135b5cd60>
def open(self):
"""
Abstract Method. Open the page
"""
> self.browser.get(self.splunk_web_url)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="512799c21ad44d9d83ee90f5b47922af")>
url = 'http://splunk:8000/'
def get(self, url):
"""
Loads a web page in the current browser session.
"""
> self.execute(Command.GET, {'url': url})
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:333:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="512799c21ad44d9d83ee90f5b47922af")>
driver_command = 'get', params = {'url': 'http://splunk:8000/'}
def execute(self, driver_command, params=None):
"""
Sends a command to be executed by a command.CommandExecutor.
:Args:
- driver_command: The name of the command to execute as a string.
- params: A dictionary of named parameters to send with the command.
:Returns:
The command's JSON response loaded into a dictionary object.
"""
if self.session_id is not None:
if not params:
params = {'sessionId': self.session_id}
elif 'sessionId' not in params:
params['sessionId'] = self.session_id
params = self._wrap_value(params)
response = self.command_executor.execute(driver_command, params)
if response:
> self.error_handler.check_response(response)
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:321:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fa135b5efe0>
response = {'status': 500, 'value': '{"value": {"stacktrace": "RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8...splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.", "error": "unknown error"}}'}
def check_response(self, response):
"""
Checks that a JSON response from the WebDriver does not have an error.
:Args:
- response - The JSON response from the WebDriver server as a dictionary
object.
:Raises: If the response contains an error message.
"""
status = response.get('status', None)
if status is None or status == ErrorCode.SUCCESS:
return
value = None
message = response.get("message", "")
screen = response.get("screen", "")
stacktrace = None
if isinstance(status, int):
value_json = response.get('value', None)
if value_json and isinstance(value_json, basestring):
import json
try:
value = json.loads(value_json)
if len(value.keys()) == 1:
value = value['value']
status = value.get('error', None)
if status is None:
status = value["status"]
message = value["value"]
if not isinstance(message, basestring):
value = message
message = message.get('message')
else:
message = value.get('message', None)
except ValueError:
pass
exception_class = ErrorInResponseException
if status in ErrorCode.NO_SUCH_ELEMENT:
exception_class = NoSuchElementException
elif status in ErrorCode.NO_SUCH_FRAME:
exception_class = NoSuchFrameException
elif status in ErrorCode.NO_SUCH_WINDOW:
exception_class = NoSuchWindowException
elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
exception_class = StaleElementReferenceException
elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
exception_class = ElementNotVisibleException
elif status in ErrorCode.INVALID_ELEMENT_STATE:
exception_class = InvalidElementStateException
elif status in ErrorCode.INVALID_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
exception_class = InvalidSelectorException
elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
exception_class = ElementNotSelectableException
elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
exception_class = ElementNotInteractableException
elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
exception_class = InvalidCookieDomainException
elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
exception_class = UnableToSetCookieException
elif status in ErrorCode.TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.SCRIPT_TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.UNKNOWN_ERROR:
exception_class = WebDriverException
elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
exception_class = UnexpectedAlertPresentException
elif status in ErrorCode.NO_ALERT_OPEN:
exception_class = NoAlertPresentException
elif status in ErrorCode.IME_NOT_AVAILABLE:
exception_class = ImeNotAvailableException
elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
exception_class = ImeActivationFailedException
elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
exception_class = MoveTargetOutOfBoundsException
elif status in ErrorCode.JAVASCRIPT_ERROR:
exception_class = JavascriptException
elif status in ErrorCode.SESSION_NOT_CREATED:
exception_class = SessionNotCreatedException
elif status in ErrorCode.INVALID_ARGUMENT:
exception_class = InvalidArgumentException
elif status in ErrorCode.NO_SUCH_COOKIE:
exception_class = NoSuchCookieException
elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
exception_class = ScreenshotException
elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
exception_class = ElementClickInterceptedException
elif status in ErrorCode.INSECURE_CERTIFICATE:
exception_class = InsecureCertificateException
elif status in ErrorCode.INVALID_COORDINATES:
exception_class = InvalidCoordinatesException
elif status in ErrorCode.INVALID_SESSION_ID:
exception_class = InvalidSessionIdException
elif status in ErrorCode.UNKNOWN_METHOD:
exception_class = UnknownMethodException
else:
exception_class = WebDriverException
if value == '' or value is None:
value = response['value']
if isinstance(value, basestring):
if exception_class == ErrorInResponseException:
raise exception_class(response, value)
raise exception_class(value)
if message == "" and 'message' in value:
message = value['message']
screen = None
if 'screen' in value:
screen = value['screen']
stacktrace = None
if 'stackTrace' in value and value['stackTrace']:
stacktrace = []
try:
for frame in value['stackTrace']:
line = self._value_or_default(frame, 'lineNumber', '')
file = self._value_or_default(frame, 'fileName', '<anonymous>')
if line:
file = "%s:%s" % (file, line)
meth = self._value_or_default(frame, 'methodName', '<anonymous>')
if 'className' in frame:
meth = "%s.%s" % (frame['className'], meth)
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if exception_class == ErrorInResponseException:
raise exception_class(response, message)
elif exception_class == UnexpectedAlertPresentException:
alert_text = None
if 'data' in value:
alert_text = value['data'].get('text')
elif 'alert' in value:
alert_text = value['alert'].get('text')
raise exception_class(message, screen, stacktrace, alert_text)
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=dnsNotFound&u=http%3A//splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py:242: WebDriverException
Check failure on line 0 in test-results/test.xml
github-actions / test-report-9.0.6__firefox_test_splunk_ta_example_addon_input_2
pytest ► tests.ui.test_splunk_ta_example_addon_input_2.firefox_TestInput ► test_example_input_two_required_field_example_example_account
Failed test found in:
test-results/test.xml
Error:
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_example_example_account>>
Raw output
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_example_example_account>>
@pytest.fixture(scope="function", autouse=True)
def ucc_smartx_selenium_wrapper(request):
"""
Calls ucc_smartx_selenium_helper fixture
"""
if "ucc_smartx_selenium_helper" in request.fixturenames:
> request.node.selenium_helper = request.getfixturevalue(
"ucc_smartx_selenium_helper"
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:254:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_required_field_example_example_account>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
break
except Exception as e:
last_exc = e
LOGGER.warning(
"Failed to configure the browser or login to Splunk instance for - Try={} \nTRACEBACK::{}".format(
try_number, traceback.format_exc()
)
)
else:
LOGGER.error(
"Could not connect to Browser or login to Splunk instance. Please check the logs for detailed error of each retry"
)
> raise (last_exc)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:198:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_required_field_example_example_account>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
> selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:176:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135ad0fd0>
browser = 'firefox', browser_version = 'latest'
splunk_web_url = 'http://splunk:8000/'
splunk_mgmt_url = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
debug = False, cred = ('admin', 'Chang3d!'), headless = False
test_case = 'firefox_test_example_input_two_required_field_example_example_account'
def __init__(
self,
browser,
browser_version,
splunk_web_url,
splunk_mgmt_url,
debug=False,
cred=("admin", "Chang3d!"),
headless=False,
test_case=None,
):
self.splunk_web_url = splunk_web_url
self.splunk_mgmt_url = splunk_mgmt_url
self.cred = cred
self.test_case = test_case
self.skip_saucelab_job = False
if "grid" in browser:
self.skip_saucelab_job = True
debug = True
if not debug:
# Using Saucelabs
self.init_sauce_env_variables()
try:
if browser == "firefox":
if debug:
self.browser = webdriver.Firefox(
firefox_options=self.get_local_firefox_opts(headless),
log_path="selenium.log",
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_firefox_opts(
browser_version
),
)
elif browser == "chrome":
if debug:
self.browser = webdriver.Chrome(
chrome_options=self.get_local_chrome_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_chrome_opts(
browser_version
),
)
# selenium local stack
elif browser == "chrome_grid":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://chrome-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_grid":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://firefox-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
# kubernetes selenium
elif browser == "chrome_k8s":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_k8s":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
elif browser == "edge":
if debug:
self.browser = Edge(
executable_path="msedgedriver",
desired_capabilities=self.get_local_edge_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
command_executor = EdgeRemoteConnection(
"https://ondemand.saucelabs.com:443/wd/hub"
)
options = EdgeOptions()
options.use_chromium = True
self.browser = webdriver.Remote(
command_executor=command_executor,
options=options,
desired_capabilities=self.get_sauce_edge_opts(browser_version),
)
elif browser == "IE":
if debug:
self.browser = webdriver.Ie(capabilities=self.get_local_ie_opts())
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_ie_opts(browser_version),
)
elif browser == "safari":
if debug:
self.browser = webdriver.Safari()
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_safari_opts(
browser_version
),
)
else:
raise Exception(
"No valid browser found.! expected=[firefox, chrome, safari], got={}".format(
browser
)
)
except Exception as e:
raise e
try:
self.browser_session = self.browser.session_id
> self.login_to_splunk(*self.cred)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:207:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135ad0fd0>
cred = ('admin', 'Chang3d!')
def login_to_splunk(self, *cred):
try:
> login_page = LoginPage(self)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa135ad0970>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135ad0fd0>
def __init__(self, ucc_smartx_selenium_helper):
"""
:param ucc_smartx_selenium_helper: Fixture with selenium driver, urls(web, mgmt) and session key
"""
> super().__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper=None)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/login.py:33:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa135ad0970>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa135ad0fd0>
ucc_smartx_rest_helper = None, open_page = True
def __init__(
self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page=True
):
"""
:param ucc_smartx_selenium_helper: The selenium webdriver
:param ucc_smartx_rest_helper: Splunk web & management url. {"web": , "mgmt": }
"""
if ucc_smartx_selenium_helper:
self.browser = ucc_smartx_selenium_helper.browser
self.splunk_web_url = ucc_smartx_selenium_helper.splunk_web_url
if open_page:
> self.open()
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa135ad0970>
def open(self):
"""
Abstract Method. Open the page
"""
> self.browser.get(self.splunk_web_url)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="7b8ccffcad084af9b2b4abf79cc6b7f2")>
url = 'http://splunk:8000/'
def get(self, url):
"""
Loads a web page in the current browser session.
"""
> self.execute(Command.GET, {'url': url})
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:333:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="7b8ccffcad084af9b2b4abf79cc6b7f2")>
driver_command = 'get', params = {'url': 'http://splunk:8000/'}
def execute(self, driver_command, params=None):
"""
Sends a command to be executed by a command.CommandExecutor.
:Args:
- driver_command: The name of the command to execute as a string.
- params: A dictionary of named parameters to send with the command.
:Returns:
The command's JSON response loaded into a dictionary object.
"""
if self.session_id is not None:
if not params:
params = {'sessionId': self.session_id}
elif 'sessionId' not in params:
params['sessionId'] = self.session_id
params = self._wrap_value(params)
response = self.command_executor.execute(driver_command, params)
if response:
> self.error_handler.check_response(response)
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:321:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fa135ad2890>
response = {'status': 500, 'value': '{"value": {"stacktrace": "RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8...splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.", "error": "unknown error"}}'}
def check_response(self, response):
"""
Checks that a JSON response from the WebDriver does not have an error.
:Args:
- response - The JSON response from the WebDriver server as a dictionary
object.
:Raises: If the response contains an error message.
"""
status = response.get('status', None)
if status is None or status == ErrorCode.SUCCESS:
return
value = None
message = response.get("message", "")
screen = response.get("screen", "")
stacktrace = None
if isinstance(status, int):
value_json = response.get('value', None)
if value_json and isinstance(value_json, basestring):
import json
try:
value = json.loads(value_json)
if len(value.keys()) == 1:
value = value['value']
status = value.get('error', None)
if status is None:
status = value["status"]
message = value["value"]
if not isinstance(message, basestring):
value = message
message = message.get('message')
else:
message = value.get('message', None)
except ValueError:
pass
exception_class = ErrorInResponseException
if status in ErrorCode.NO_SUCH_ELEMENT:
exception_class = NoSuchElementException
elif status in ErrorCode.NO_SUCH_FRAME:
exception_class = NoSuchFrameException
elif status in ErrorCode.NO_SUCH_WINDOW:
exception_class = NoSuchWindowException
elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
exception_class = StaleElementReferenceException
elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
exception_class = ElementNotVisibleException
elif status in ErrorCode.INVALID_ELEMENT_STATE:
exception_class = InvalidElementStateException
elif status in ErrorCode.INVALID_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
exception_class = InvalidSelectorException
elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
exception_class = ElementNotSelectableException
elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
exception_class = ElementNotInteractableException
elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
exception_class = InvalidCookieDomainException
elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
exception_class = UnableToSetCookieException
elif status in ErrorCode.TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.SCRIPT_TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.UNKNOWN_ERROR:
exception_class = WebDriverException
elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
exception_class = UnexpectedAlertPresentException
elif status in ErrorCode.NO_ALERT_OPEN:
exception_class = NoAlertPresentException
elif status in ErrorCode.IME_NOT_AVAILABLE:
exception_class = ImeNotAvailableException
elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
exception_class = ImeActivationFailedException
elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
exception_class = MoveTargetOutOfBoundsException
elif status in ErrorCode.JAVASCRIPT_ERROR:
exception_class = JavascriptException
elif status in ErrorCode.SESSION_NOT_CREATED:
exception_class = SessionNotCreatedException
elif status in ErrorCode.INVALID_ARGUMENT:
exception_class = InvalidArgumentException
elif status in ErrorCode.NO_SUCH_COOKIE:
exception_class = NoSuchCookieException
elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
exception_class = ScreenshotException
elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
exception_class = ElementClickInterceptedException
elif status in ErrorCode.INSECURE_CERTIFICATE:
exception_class = InsecureCertificateException
elif status in ErrorCode.INVALID_COORDINATES:
exception_class = InvalidCoordinatesException
elif status in ErrorCode.INVALID_SESSION_ID:
exception_class = InvalidSessionIdException
elif status in ErrorCode.UNKNOWN_METHOD:
exception_class = UnknownMethodException
else:
exception_class = WebDriverException
if value == '' or value is None:
value = response['value']
if isinstance(value, basestring):
if exception_class == ErrorInResponseException:
raise exception_class(response, value)
raise exception_class(value)
if message == "" and 'message' in value:
message = value['message']
screen = None
if 'screen' in value:
screen = value['screen']
stacktrace = None
if 'stackTrace' in value and value['stackTrace']:
stacktrace = []
try:
for frame in value['stackTrace']:
line = self._value_or_default(frame, 'lineNumber', '')
file = self._value_or_default(frame, 'fileName', '<anonymous>')
if line:
file = "%s:%s" % (file, line)
meth = self._value_or_default(frame, 'methodName', '<anonymous>')
if 'className' in frame:
meth = "%s.%s" % (frame['className'], meth)
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if exception_class == ErrorInResponseException:
raise exception_class(response, message)
elif exception_class == UnexpectedAlertPresentException:
alert_text = None
if 'data' in value:
alert_text = value['data'].get('text')
elif 'alert' in value:
alert_text = value['alert'].get('text')
raise exception_class(message, screen, stacktrace, alert_text)
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=dnsNotFound&u=http%3A//splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py:242: WebDriverException
Check failure on line 0 in test-results/test.xml
github-actions / test-report-9.0.6__firefox_test_splunk_ta_example_addon_input_2
pytest ► tests.ui.test_splunk_ta_example_addon_input_2.firefox_TestInput ► test_example_input_two_required_field_example_multiple_select
Failed test found in:
test-results/test.xml
Error:
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_example_multiple_select>>
Raw output
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_required_field_example_multiple_select>>
@pytest.fixture(scope="function", autouse=True)
def ucc_smartx_selenium_wrapper(request):
"""
Calls ucc_smartx_selenium_helper fixture
"""
if "ucc_smartx_selenium_helper" in request.fixturenames:
> request.node.selenium_helper = request.getfixturevalue(
"ucc_smartx_selenium_helper"
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:254:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_required_field_example_multiple_select>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
break
except Exception as e:
last_exc = e
LOGGER.warning(
"Failed to configure the browser or login to Splunk instance for - Try={} \nTRACEBACK::{}".format(
try_number, traceback.format_exc()
)
)
else:
LOGGER.error(
"Could not connect to Browser or login to Splunk instance. Please check the logs for detailed error of each retry"
)
> raise (last_exc)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:198:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_required_field_example_multiple_select>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
> selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:176:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358f1a50>
browser = 'firefox', browser_version = 'latest'
splunk_web_url = 'http://splunk:8000/'
splunk_mgmt_url = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
debug = False, cred = ('admin', 'Chang3d!'), headless = False
test_case = 'firefox_test_example_input_two_required_field_example_multiple_select'
def __init__(
self,
browser,
browser_version,
splunk_web_url,
splunk_mgmt_url,
debug=False,
cred=("admin", "Chang3d!"),
headless=False,
test_case=None,
):
self.splunk_web_url = splunk_web_url
self.splunk_mgmt_url = splunk_mgmt_url
self.cred = cred
self.test_case = test_case
self.skip_saucelab_job = False
if "grid" in browser:
self.skip_saucelab_job = True
debug = True
if not debug:
# Using Saucelabs
self.init_sauce_env_variables()
try:
if browser == "firefox":
if debug:
self.browser = webdriver.Firefox(
firefox_options=self.get_local_firefox_opts(headless),
log_path="selenium.log",
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_firefox_opts(
browser_version
),
)
elif browser == "chrome":
if debug:
self.browser = webdriver.Chrome(
chrome_options=self.get_local_chrome_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_chrome_opts(
browser_version
),
)
# selenium local stack
elif browser == "chrome_grid":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://chrome-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_grid":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://firefox-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
# kubernetes selenium
elif browser == "chrome_k8s":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_k8s":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
elif browser == "edge":
if debug:
self.browser = Edge(
executable_path="msedgedriver",
desired_capabilities=self.get_local_edge_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
command_executor = EdgeRemoteConnection(
"https://ondemand.saucelabs.com:443/wd/hub"
)
options = EdgeOptions()
options.use_chromium = True
self.browser = webdriver.Remote(
command_executor=command_executor,
options=options,
desired_capabilities=self.get_sauce_edge_opts(browser_version),
)
elif browser == "IE":
if debug:
self.browser = webdriver.Ie(capabilities=self.get_local_ie_opts())
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_ie_opts(browser_version),
)
elif browser == "safari":
if debug:
self.browser = webdriver.Safari()
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_safari_opts(
browser_version
),
)
else:
raise Exception(
"No valid browser found.! expected=[firefox, chrome, safari], got={}".format(
browser
)
)
except Exception as e:
raise e
try:
self.browser_session = self.browser.session_id
> self.login_to_splunk(*self.cred)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:207:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358f1a50>
cred = ('admin', 'Chang3d!')
def login_to_splunk(self, *cred):
try:
> login_page = LoginPage(self)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358f2890>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358f1a50>
def __init__(self, ucc_smartx_selenium_helper):
"""
:param ucc_smartx_selenium_helper: Fixture with selenium driver, urls(web, mgmt) and session key
"""
> super().__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper=None)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/login.py:33:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358f2890>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358f1a50>
ucc_smartx_rest_helper = None, open_page = True
def __init__(
self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page=True
):
"""
:param ucc_smartx_selenium_helper: The selenium webdriver
:param ucc_smartx_rest_helper: Splunk web & management url. {"web": , "mgmt": }
"""
if ucc_smartx_selenium_helper:
self.browser = ucc_smartx_selenium_helper.browser
self.splunk_web_url = ucc_smartx_selenium_helper.splunk_web_url
if open_page:
> self.open()
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358f2890>
def open(self):
"""
Abstract Method. Open the page
"""
> self.browser.get(self.splunk_web_url)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="cb9d6dddc9b34d66a56717e2b7521fc8")>
url = 'http://splunk:8000/'
def get(self, url):
"""
Loads a web page in the current browser session.
"""
> self.execute(Command.GET, {'url': url})
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:333:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="cb9d6dddc9b34d66a56717e2b7521fc8")>
driver_command = 'get', params = {'url': 'http://splunk:8000/'}
def execute(self, driver_command, params=None):
"""
Sends a command to be executed by a command.CommandExecutor.
:Args:
- driver_command: The name of the command to execute as a string.
- params: A dictionary of named parameters to send with the command.
:Returns:
The command's JSON response loaded into a dictionary object.
"""
if self.session_id is not None:
if not params:
params = {'sessionId': self.session_id}
elif 'sessionId' not in params:
params['sessionId'] = self.session_id
params = self._wrap_value(params)
response = self.command_executor.execute(driver_command, params)
if response:
> self.error_handler.check_response(response)
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:321:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fa1358f2cb0>
response = {'status': 500, 'value': '{"value": {"stacktrace": "RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8...splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.", "error": "unknown error"}}'}
def check_response(self, response):
"""
Checks that a JSON response from the WebDriver does not have an error.
:Args:
- response - The JSON response from the WebDriver server as a dictionary
object.
:Raises: If the response contains an error message.
"""
status = response.get('status', None)
if status is None or status == ErrorCode.SUCCESS:
return
value = None
message = response.get("message", "")
screen = response.get("screen", "")
stacktrace = None
if isinstance(status, int):
value_json = response.get('value', None)
if value_json and isinstance(value_json, basestring):
import json
try:
value = json.loads(value_json)
if len(value.keys()) == 1:
value = value['value']
status = value.get('error', None)
if status is None:
status = value["status"]
message = value["value"]
if not isinstance(message, basestring):
value = message
message = message.get('message')
else:
message = value.get('message', None)
except ValueError:
pass
exception_class = ErrorInResponseException
if status in ErrorCode.NO_SUCH_ELEMENT:
exception_class = NoSuchElementException
elif status in ErrorCode.NO_SUCH_FRAME:
exception_class = NoSuchFrameException
elif status in ErrorCode.NO_SUCH_WINDOW:
exception_class = NoSuchWindowException
elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
exception_class = StaleElementReferenceException
elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
exception_class = ElementNotVisibleException
elif status in ErrorCode.INVALID_ELEMENT_STATE:
exception_class = InvalidElementStateException
elif status in ErrorCode.INVALID_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
exception_class = InvalidSelectorException
elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
exception_class = ElementNotSelectableException
elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
exception_class = ElementNotInteractableException
elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
exception_class = InvalidCookieDomainException
elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
exception_class = UnableToSetCookieException
elif status in ErrorCode.TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.SCRIPT_TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.UNKNOWN_ERROR:
exception_class = WebDriverException
elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
exception_class = UnexpectedAlertPresentException
elif status in ErrorCode.NO_ALERT_OPEN:
exception_class = NoAlertPresentException
elif status in ErrorCode.IME_NOT_AVAILABLE:
exception_class = ImeNotAvailableException
elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
exception_class = ImeActivationFailedException
elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
exception_class = MoveTargetOutOfBoundsException
elif status in ErrorCode.JAVASCRIPT_ERROR:
exception_class = JavascriptException
elif status in ErrorCode.SESSION_NOT_CREATED:
exception_class = SessionNotCreatedException
elif status in ErrorCode.INVALID_ARGUMENT:
exception_class = InvalidArgumentException
elif status in ErrorCode.NO_SUCH_COOKIE:
exception_class = NoSuchCookieException
elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
exception_class = ScreenshotException
elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
exception_class = ElementClickInterceptedException
elif status in ErrorCode.INSECURE_CERTIFICATE:
exception_class = InsecureCertificateException
elif status in ErrorCode.INVALID_COORDINATES:
exception_class = InvalidCoordinatesException
elif status in ErrorCode.INVALID_SESSION_ID:
exception_class = InvalidSessionIdException
elif status in ErrorCode.UNKNOWN_METHOD:
exception_class = UnknownMethodException
else:
exception_class = WebDriverException
if value == '' or value is None:
value = response['value']
if isinstance(value, basestring):
if exception_class == ErrorInResponseException:
raise exception_class(response, value)
raise exception_class(value)
if message == "" and 'message' in value:
message = value['message']
screen = None
if 'screen' in value:
screen = value['screen']
stacktrace = None
if 'stackTrace' in value and value['stackTrace']:
stacktrace = []
try:
for frame in value['stackTrace']:
line = self._value_or_default(frame, 'lineNumber', '')
file = self._value_or_default(frame, 'fileName', '<anonymous>')
if line:
file = "%s:%s" % (file, line)
meth = self._value_or_default(frame, 'methodName', '<anonymous>')
if 'className' in frame:
meth = "%s.%s" % (frame['className'], meth)
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if exception_class == ErrorInResponseException:
raise exception_class(response, message)
elif exception_class == UnexpectedAlertPresentException:
alert_text = None
if 'data' in value:
alert_text = value['data'].get('text')
elif 'alert' in value:
alert_text = value['alert'].get('text')
raise exception_class(message, screen, stacktrace, alert_text)
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=dnsNotFound&u=http%3A//splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py:242: WebDriverException
Check failure on line 0 in test-results/test.xml
github-actions / test-report-9.0.6__firefox_test_splunk_ta_example_addon_input_2
pytest ► tests.ui.test_splunk_ta_example_addon_input_2.firefox_TestInput ► test_example_input_two_list_example_multiple_select
Failed test found in:
test-results/test.xml
Error:
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_list_example_multiple_select>>
Raw output
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_list_example_multiple_select>>
@pytest.fixture(scope="function", autouse=True)
def ucc_smartx_selenium_wrapper(request):
"""
Calls ucc_smartx_selenium_helper fixture
"""
if "ucc_smartx_selenium_helper" in request.fixturenames:
> request.node.selenium_helper = request.getfixturevalue(
"ucc_smartx_selenium_helper"
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:254:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_list_example_multiple_select>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
break
except Exception as e:
last_exc = e
LOGGER.warning(
"Failed to configure the browser or login to Splunk instance for - Try={} \nTRACEBACK::{}".format(
try_number, traceback.format_exc()
)
)
else:
LOGGER.error(
"Could not connect to Browser or login to Splunk instance. Please check the logs for detailed error of each retry"
)
> raise (last_exc)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:198:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_list_example_multiple_select>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
> selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:176:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358f3eb0>
browser = 'firefox', browser_version = 'latest'
splunk_web_url = 'http://splunk:8000/'
splunk_mgmt_url = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
debug = False, cred = ('admin', 'Chang3d!'), headless = False
test_case = 'firefox_test_example_input_two_list_example_multiple_select'
def __init__(
self,
browser,
browser_version,
splunk_web_url,
splunk_mgmt_url,
debug=False,
cred=("admin", "Chang3d!"),
headless=False,
test_case=None,
):
self.splunk_web_url = splunk_web_url
self.splunk_mgmt_url = splunk_mgmt_url
self.cred = cred
self.test_case = test_case
self.skip_saucelab_job = False
if "grid" in browser:
self.skip_saucelab_job = True
debug = True
if not debug:
# Using Saucelabs
self.init_sauce_env_variables()
try:
if browser == "firefox":
if debug:
self.browser = webdriver.Firefox(
firefox_options=self.get_local_firefox_opts(headless),
log_path="selenium.log",
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_firefox_opts(
browser_version
),
)
elif browser == "chrome":
if debug:
self.browser = webdriver.Chrome(
chrome_options=self.get_local_chrome_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_chrome_opts(
browser_version
),
)
# selenium local stack
elif browser == "chrome_grid":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://chrome-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_grid":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://firefox-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
# kubernetes selenium
elif browser == "chrome_k8s":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_k8s":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
elif browser == "edge":
if debug:
self.browser = Edge(
executable_path="msedgedriver",
desired_capabilities=self.get_local_edge_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
command_executor = EdgeRemoteConnection(
"https://ondemand.saucelabs.com:443/wd/hub"
)
options = EdgeOptions()
options.use_chromium = True
self.browser = webdriver.Remote(
command_executor=command_executor,
options=options,
desired_capabilities=self.get_sauce_edge_opts(browser_version),
)
elif browser == "IE":
if debug:
self.browser = webdriver.Ie(capabilities=self.get_local_ie_opts())
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_ie_opts(browser_version),
)
elif browser == "safari":
if debug:
self.browser = webdriver.Safari()
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_safari_opts(
browser_version
),
)
else:
raise Exception(
"No valid browser found.! expected=[firefox, chrome, safari], got={}".format(
browser
)
)
except Exception as e:
raise e
try:
self.browser_session = self.browser.session_id
> self.login_to_splunk(*self.cred)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:207:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358f3eb0>
cred = ('admin', 'Chang3d!')
def login_to_splunk(self, *cred):
try:
> login_page = LoginPage(self)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358f1a50>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358f3eb0>
def __init__(self, ucc_smartx_selenium_helper):
"""
:param ucc_smartx_selenium_helper: Fixture with selenium driver, urls(web, mgmt) and session key
"""
> super().__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper=None)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/login.py:33:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358f1a50>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358f3eb0>
ucc_smartx_rest_helper = None, open_page = True
def __init__(
self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page=True
):
"""
:param ucc_smartx_selenium_helper: The selenium webdriver
:param ucc_smartx_rest_helper: Splunk web & management url. {"web": , "mgmt": }
"""
if ucc_smartx_selenium_helper:
self.browser = ucc_smartx_selenium_helper.browser
self.splunk_web_url = ucc_smartx_selenium_helper.splunk_web_url
if open_page:
> self.open()
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358f1a50>
def open(self):
"""
Abstract Method. Open the page
"""
> self.browser.get(self.splunk_web_url)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="3f18a75eae644f18ab9a5c2a47e9c606")>
url = 'http://splunk:8000/'
def get(self, url):
"""
Loads a web page in the current browser session.
"""
> self.execute(Command.GET, {'url': url})
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:333:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="3f18a75eae644f18ab9a5c2a47e9c606")>
driver_command = 'get', params = {'url': 'http://splunk:8000/'}
def execute(self, driver_command, params=None):
"""
Sends a command to be executed by a command.CommandExecutor.
:Args:
- driver_command: The name of the command to execute as a string.
- params: A dictionary of named parameters to send with the command.
:Returns:
The command's JSON response loaded into a dictionary object.
"""
if self.session_id is not None:
if not params:
params = {'sessionId': self.session_id}
elif 'sessionId' not in params:
params['sessionId'] = self.session_id
params = self._wrap_value(params)
response = self.command_executor.execute(driver_command, params)
if response:
> self.error_handler.check_response(response)
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:321:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fa1358f1a20>
response = {'status': 500, 'value': '{"value": {"stacktrace": "RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8...splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.", "error": "unknown error"}}'}
def check_response(self, response):
"""
Checks that a JSON response from the WebDriver does not have an error.
:Args:
- response - The JSON response from the WebDriver server as a dictionary
object.
:Raises: If the response contains an error message.
"""
status = response.get('status', None)
if status is None or status == ErrorCode.SUCCESS:
return
value = None
message = response.get("message", "")
screen = response.get("screen", "")
stacktrace = None
if isinstance(status, int):
value_json = response.get('value', None)
if value_json and isinstance(value_json, basestring):
import json
try:
value = json.loads(value_json)
if len(value.keys()) == 1:
value = value['value']
status = value.get('error', None)
if status is None:
status = value["status"]
message = value["value"]
if not isinstance(message, basestring):
value = message
message = message.get('message')
else:
message = value.get('message', None)
except ValueError:
pass
exception_class = ErrorInResponseException
if status in ErrorCode.NO_SUCH_ELEMENT:
exception_class = NoSuchElementException
elif status in ErrorCode.NO_SUCH_FRAME:
exception_class = NoSuchFrameException
elif status in ErrorCode.NO_SUCH_WINDOW:
exception_class = NoSuchWindowException
elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
exception_class = StaleElementReferenceException
elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
exception_class = ElementNotVisibleException
elif status in ErrorCode.INVALID_ELEMENT_STATE:
exception_class = InvalidElementStateException
elif status in ErrorCode.INVALID_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
exception_class = InvalidSelectorException
elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
exception_class = ElementNotSelectableException
elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
exception_class = ElementNotInteractableException
elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
exception_class = InvalidCookieDomainException
elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
exception_class = UnableToSetCookieException
elif status in ErrorCode.TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.SCRIPT_TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.UNKNOWN_ERROR:
exception_class = WebDriverException
elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
exception_class = UnexpectedAlertPresentException
elif status in ErrorCode.NO_ALERT_OPEN:
exception_class = NoAlertPresentException
elif status in ErrorCode.IME_NOT_AVAILABLE:
exception_class = ImeNotAvailableException
elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
exception_class = ImeActivationFailedException
elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
exception_class = MoveTargetOutOfBoundsException
elif status in ErrorCode.JAVASCRIPT_ERROR:
exception_class = JavascriptException
elif status in ErrorCode.SESSION_NOT_CREATED:
exception_class = SessionNotCreatedException
elif status in ErrorCode.INVALID_ARGUMENT:
exception_class = InvalidArgumentException
elif status in ErrorCode.NO_SUCH_COOKIE:
exception_class = NoSuchCookieException
elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
exception_class = ScreenshotException
elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
exception_class = ElementClickInterceptedException
elif status in ErrorCode.INSECURE_CERTIFICATE:
exception_class = InsecureCertificateException
elif status in ErrorCode.INVALID_COORDINATES:
exception_class = InvalidCoordinatesException
elif status in ErrorCode.INVALID_SESSION_ID:
exception_class = InvalidSessionIdException
elif status in ErrorCode.UNKNOWN_METHOD:
exception_class = UnknownMethodException
else:
exception_class = WebDriverException
if value == '' or value is None:
value = response['value']
if isinstance(value, basestring):
if exception_class == ErrorInResponseException:
raise exception_class(response, value)
raise exception_class(value)
if message == "" and 'message' in value:
message = value['message']
screen = None
if 'screen' in value:
screen = value['screen']
stacktrace = None
if 'stackTrace' in value and value['stackTrace']:
stacktrace = []
try:
for frame in value['stackTrace']:
line = self._value_or_default(frame, 'lineNumber', '')
file = self._value_or_default(frame, 'fileName', '<anonymous>')
if line:
file = "%s:%s" % (file, line)
meth = self._value_or_default(frame, 'methodName', '<anonymous>')
if 'className' in frame:
meth = "%s.%s" % (frame['className'], meth)
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if exception_class == ErrorInResponseException:
raise exception_class(response, message)
elif exception_class == UnexpectedAlertPresentException:
alert_text = None
if 'data' in value:
alert_text = value['data'].get('text')
elif 'alert' in value:
alert_text = value['alert'].get('text')
raise exception_class(message, screen, stacktrace, alert_text)
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=dnsNotFound&u=http%3A//splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py:242: WebDriverException
Check failure on line 0 in test-results/test.xml
github-actions / test-report-9.0.6__firefox_test_splunk_ta_example_addon_input_2
pytest ► tests.ui.test_splunk_ta_example_addon_input_2.firefox_TestInput ► test_example_input_two_select_select_value_example_multiple_select
Failed test found in:
test-results/test.xml
Error:
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_select_select_value_example_multiple_select>>
Raw output
request = <SubRequest 'ucc_smartx_selenium_wrapper' for <Function test_example_input_two_select_select_value_example_multiple_select>>
@pytest.fixture(scope="function", autouse=True)
def ucc_smartx_selenium_wrapper(request):
"""
Calls ucc_smartx_selenium_helper fixture
"""
if "ucc_smartx_selenium_helper" in request.fixturenames:
> request.node.selenium_helper = request.getfixturevalue(
"ucc_smartx_selenium_helper"
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:254:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_select_select_value_example_multiple_select>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
break
except Exception as e:
last_exc = e
LOGGER.warning(
"Failed to configure the browser or login to Splunk instance for - Try={} \nTRACEBACK::{}".format(
try_number, traceback.format_exc()
)
)
else:
LOGGER.error(
"Could not connect to Browser or login to Splunk instance. Please check the logs for detailed error of each retry"
)
> raise (last_exc)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:198:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
request = <SubRequest 'ucc_smartx_selenium_helper' for <Function test_example_input_two_select_select_value_example_multiple_select>>
ucc_smartx_configs = SmartConfigs(driver='firefox', driver_version='latest', local_run=False, retry_count=3, headless_run=False)
splunk = {'forwarder_host': 'splunk', 'host': 'splunk', 'password': 'Chang3d!', 'port': '8089', ...}
splunk_web_uri = 'http://splunk:8000/'
splunk_rest_uri = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
@pytest.fixture(scope=get_browser_scope)
def ucc_smartx_selenium_helper(
request, ucc_smartx_configs, splunk, splunk_web_uri, splunk_rest_uri
):
# Try to configure selenium & Login to splunk instance
test_case = "{}_{}".format(
ucc_smartx_configs.driver, request.node.nodeid.split("::")[-1]
)
for try_number in range(ucc_smartx_configs.retry_count):
last_exc = Exception()
try:
> selenium_helper = SeleniumHelper(
ucc_smartx_configs.driver,
ucc_smartx_configs.driver_version,
splunk_web_uri,
splunk_rest_uri,
debug=ucc_smartx_configs.local_run,
cred=(splunk["username"], splunk["password"]),
headless=ucc_smartx_configs.headless_run,
test_case=test_case,
)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/plugin.py:176:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358be800>
browser = 'firefox', browser_version = 'latest'
splunk_web_url = 'http://splunk:8000/'
splunk_mgmt_url = (<requests.sessions.Session object at 0x7fa135b5c760>, 'https://splunk:8089/')
debug = False, cred = ('admin', 'Chang3d!'), headless = False
test_case = 'firefox_test_example_input_two_select_select_value_example_multiple_select'
def __init__(
self,
browser,
browser_version,
splunk_web_url,
splunk_mgmt_url,
debug=False,
cred=("admin", "Chang3d!"),
headless=False,
test_case=None,
):
self.splunk_web_url = splunk_web_url
self.splunk_mgmt_url = splunk_mgmt_url
self.cred = cred
self.test_case = test_case
self.skip_saucelab_job = False
if "grid" in browser:
self.skip_saucelab_job = True
debug = True
if not debug:
# Using Saucelabs
self.init_sauce_env_variables()
try:
if browser == "firefox":
if debug:
self.browser = webdriver.Firefox(
firefox_options=self.get_local_firefox_opts(headless),
log_path="selenium.log",
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_firefox_opts(
browser_version
),
)
elif browser == "chrome":
if debug:
self.browser = webdriver.Chrome(
chrome_options=self.get_local_chrome_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_chrome_opts(
browser_version
),
)
# selenium local stack
elif browser == "chrome_grid":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://chrome-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_grid":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://firefox-grid:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
# kubernetes selenium
elif browser == "chrome_k8s":
google_cert_opts = {
"goog:chromeOptions": {
"w3c": True,
"args": ["ignore-certificate-errors", "ignore-ssl-errors=yes"],
}
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts("chrome", google_cert_opts),
)
elif browser == "firefox_k8s":
firefox_cert_opts = {
"acceptInsecureCerts": True,
"acceptSslCerts": True,
}
self.browser = webdriver.Remote(
command_executor="http://selenium-hub.selenium.svc.cluster.local:4444/wd/hub",
desired_capabilities=self.get_grid_opts(
"firefox", firefox_cert_opts
),
)
elif browser == "edge":
if debug:
self.browser = Edge(
executable_path="msedgedriver",
desired_capabilities=self.get_local_edge_opts(headless),
service_args=["--verbose", "--log-path=selenium.log"],
)
else:
command_executor = EdgeRemoteConnection(
"https://ondemand.saucelabs.com:443/wd/hub"
)
options = EdgeOptions()
options.use_chromium = True
self.browser = webdriver.Remote(
command_executor=command_executor,
options=options,
desired_capabilities=self.get_sauce_edge_opts(browser_version),
)
elif browser == "IE":
if debug:
self.browser = webdriver.Ie(capabilities=self.get_local_ie_opts())
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_ie_opts(browser_version),
)
elif browser == "safari":
if debug:
self.browser = webdriver.Safari()
else:
self.browser = webdriver.Remote(
command_executor="https://ondemand.saucelabs.com:443/wd/hub",
desired_capabilities=self.get_sauce_safari_opts(
browser_version
),
)
else:
raise Exception(
"No valid browser found.! expected=[firefox, chrome, safari], got={}".format(
browser
)
)
except Exception as e:
raise e
try:
self.browser_session = self.browser.session_id
> self.login_to_splunk(*self.cred)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:207:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358be800>
cred = ('admin', 'Chang3d!')
def login_to_splunk(self, *cred):
try:
> login_page = LoginPage(self)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/base_test.py:444:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358bf1f0>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358be800>
def __init__(self, ucc_smartx_selenium_helper):
"""
:param ucc_smartx_selenium_helper: Fixture with selenium driver, urls(web, mgmt) and session key
"""
> super().__init__(ucc_smartx_selenium_helper, ucc_smartx_rest_helper=None)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/login.py:33:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358bf1f0>
ucc_smartx_selenium_helper = <pytest_splunk_addon_ui_smartx.base_test.SeleniumHelper object at 0x7fa1358be800>
ucc_smartx_rest_helper = None, open_page = True
def __init__(
self, ucc_smartx_selenium_helper, ucc_smartx_rest_helper, open_page=True
):
"""
:param ucc_smartx_selenium_helper: The selenium webdriver
:param ucc_smartx_rest_helper: Splunk web & management url. {"web": , "mgmt": }
"""
if ucc_smartx_selenium_helper:
self.browser = ucc_smartx_selenium_helper.browser
self.splunk_web_url = ucc_smartx_selenium_helper.splunk_web_url
if open_page:
> self.open()
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:35:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <pytest_splunk_addon_ui_smartx.pages.login.LoginPage object at 0x7fa1358bf1f0>
def open(self):
"""
Abstract Method. Open the page
"""
> self.browser.get(self.splunk_web_url)
/usr/local/lib/python3.10/dist-packages/pytest_splunk_addon_ui_smartx/pages/page.py:43:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="ba61d28d7d1f4325b84ade761c9d1db9")>
url = 'http://splunk:8000/'
def get(self, url):
"""
Loads a web page in the current browser session.
"""
> self.execute(Command.GET, {'url': url})
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:333:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.webdriver.WebDriver (session="ba61d28d7d1f4325b84ade761c9d1db9")>
driver_command = 'get', params = {'url': 'http://splunk:8000/'}
def execute(self, driver_command, params=None):
"""
Sends a command to be executed by a command.CommandExecutor.
:Args:
- driver_command: The name of the command to execute as a string.
- params: A dictionary of named parameters to send with the command.
:Returns:
The command's JSON response loaded into a dictionary object.
"""
if self.session_id is not None:
if not params:
params = {'sessionId': self.session_id}
elif 'sessionId' not in params:
params['sessionId'] = self.session_id
params = self._wrap_value(params)
response = self.command_executor.execute(driver_command, params)
if response:
> self.error_handler.check_response(response)
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/webdriver.py:321:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x7fa1358be890>
response = {'status': 500, 'value': '{"value": {"stacktrace": "RemoteError@chrome://remote/content/shared/RemoteError.sys.mjs:8:8...splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.", "error": "unknown error"}}'}
def check_response(self, response):
"""
Checks that a JSON response from the WebDriver does not have an error.
:Args:
- response - The JSON response from the WebDriver server as a dictionary
object.
:Raises: If the response contains an error message.
"""
status = response.get('status', None)
if status is None or status == ErrorCode.SUCCESS:
return
value = None
message = response.get("message", "")
screen = response.get("screen", "")
stacktrace = None
if isinstance(status, int):
value_json = response.get('value', None)
if value_json and isinstance(value_json, basestring):
import json
try:
value = json.loads(value_json)
if len(value.keys()) == 1:
value = value['value']
status = value.get('error', None)
if status is None:
status = value["status"]
message = value["value"]
if not isinstance(message, basestring):
value = message
message = message.get('message')
else:
message = value.get('message', None)
except ValueError:
pass
exception_class = ErrorInResponseException
if status in ErrorCode.NO_SUCH_ELEMENT:
exception_class = NoSuchElementException
elif status in ErrorCode.NO_SUCH_FRAME:
exception_class = NoSuchFrameException
elif status in ErrorCode.NO_SUCH_WINDOW:
exception_class = NoSuchWindowException
elif status in ErrorCode.STALE_ELEMENT_REFERENCE:
exception_class = StaleElementReferenceException
elif status in ErrorCode.ELEMENT_NOT_VISIBLE:
exception_class = ElementNotVisibleException
elif status in ErrorCode.INVALID_ELEMENT_STATE:
exception_class = InvalidElementStateException
elif status in ErrorCode.INVALID_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR \
or status in ErrorCode.INVALID_XPATH_SELECTOR_RETURN_TYPER:
exception_class = InvalidSelectorException
elif status in ErrorCode.ELEMENT_IS_NOT_SELECTABLE:
exception_class = ElementNotSelectableException
elif status in ErrorCode.ELEMENT_NOT_INTERACTABLE:
exception_class = ElementNotInteractableException
elif status in ErrorCode.INVALID_COOKIE_DOMAIN:
exception_class = InvalidCookieDomainException
elif status in ErrorCode.UNABLE_TO_SET_COOKIE:
exception_class = UnableToSetCookieException
elif status in ErrorCode.TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.SCRIPT_TIMEOUT:
exception_class = TimeoutException
elif status in ErrorCode.UNKNOWN_ERROR:
exception_class = WebDriverException
elif status in ErrorCode.UNEXPECTED_ALERT_OPEN:
exception_class = UnexpectedAlertPresentException
elif status in ErrorCode.NO_ALERT_OPEN:
exception_class = NoAlertPresentException
elif status in ErrorCode.IME_NOT_AVAILABLE:
exception_class = ImeNotAvailableException
elif status in ErrorCode.IME_ENGINE_ACTIVATION_FAILED:
exception_class = ImeActivationFailedException
elif status in ErrorCode.MOVE_TARGET_OUT_OF_BOUNDS:
exception_class = MoveTargetOutOfBoundsException
elif status in ErrorCode.JAVASCRIPT_ERROR:
exception_class = JavascriptException
elif status in ErrorCode.SESSION_NOT_CREATED:
exception_class = SessionNotCreatedException
elif status in ErrorCode.INVALID_ARGUMENT:
exception_class = InvalidArgumentException
elif status in ErrorCode.NO_SUCH_COOKIE:
exception_class = NoSuchCookieException
elif status in ErrorCode.UNABLE_TO_CAPTURE_SCREEN:
exception_class = ScreenshotException
elif status in ErrorCode.ELEMENT_CLICK_INTERCEPTED:
exception_class = ElementClickInterceptedException
elif status in ErrorCode.INSECURE_CERTIFICATE:
exception_class = InsecureCertificateException
elif status in ErrorCode.INVALID_COORDINATES:
exception_class = InvalidCoordinatesException
elif status in ErrorCode.INVALID_SESSION_ID:
exception_class = InvalidSessionIdException
elif status in ErrorCode.UNKNOWN_METHOD:
exception_class = UnknownMethodException
else:
exception_class = WebDriverException
if value == '' or value is None:
value = response['value']
if isinstance(value, basestring):
if exception_class == ErrorInResponseException:
raise exception_class(response, value)
raise exception_class(value)
if message == "" and 'message' in value:
message = value['message']
screen = None
if 'screen' in value:
screen = value['screen']
stacktrace = None
if 'stackTrace' in value and value['stackTrace']:
stacktrace = []
try:
for frame in value['stackTrace']:
line = self._value_or_default(frame, 'lineNumber', '')
file = self._value_or_default(frame, 'fileName', '<anonymous>')
if line:
file = "%s:%s" % (file, line)
meth = self._value_or_default(frame, 'methodName', '<anonymous>')
if 'className' in frame:
meth = "%s.%s" % (frame['className'], meth)
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if exception_class == ErrorInResponseException:
raise exception_class(response, message)
elif exception_class == UnexpectedAlertPresentException:
alert_text = None
if 'data' in value:
alert_text = value['data'].get('text')
elif 'alert' in value:
alert_text = value['alert'].get('text')
raise exception_class(message, screen, stacktrace, alert_text)
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.WebDriverException: Message: Reached error page: about:neterror?e=dnsNotFound&u=http%3A//splunk%3A8000/&c=UTF-8&d=We%20can%E2%80%99t%20connect%20to%20the%20server%20at%20splunk.
/usr/local/lib/python3.10/dist-packages/selenium/webdriver/remote/errorhandler.py:242: WebDriverException