-
20.42 s
test_parametrize
-
20.42 s
test_Login_page
-
6.64 s
passed(test-test)
-
PASSED [ 33%]Login Passed
-
6.88 s
failed(fakeUser-fakePassword)
-
FAILED [ 66%]
-
test_parametrize.py:13 (test_Login_page[fakeUser-fakePassword])driver =
username = 'fakeUser', password = 'fakePassword'
@pytest.mark.parametrize("username, password",[
("test", "test"),
("fakeUser", "fakePassword"),
("test1", "test1"),
])
#End Parametrized
# We Must provide Username and password in Parameter :
def test_Login_page(driver, username, password):
driver.get("https://trytestingthis.netlify.app/")
user_name = driver.find_element(By.ID, "uname")
user_pass = driver.find_element(By.ID, "pwd")
login_button = driver.find_element(By.XPATH, "//input[@value='Login']")
user_name.send_keys(username)
user_pass.send_keys(password)
login_button.click()
time.sleep(4)
> assert "Login Successful" in driver.page_source
test_parametrize.py:31:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
..\..\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\remote\webdriver.py:448: in page_source
return self.execute(Command.GET_PAGE_SOURCE)["value"]
..\..\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\remote\webdriver.py:347: in execute
self.error_handler.check_response(response)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self =
response = {'status': 500, 'value': '{"value":{"data":{"text":"Wrong Credentials! Try again!"},"error":"unexpected alert open","m...07FF67CF39B94]\\n\\tBaseThreadInitThunk [0x00007FFD051B7344+20]\\n\\tRtlUserThreadStart [0x00007FFD071C26B1+33]\\n"}}'}
def check_response(self, response: Dict[str, Any]) -> None:
"""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 not status or status == ErrorCode.SUCCESS:
return
value = None
message = response.get("message", "")
screen: str = response.get("screen", "")
stacktrace = None
if isinstance(status, int):
value_json = response.get("value", None)
if value_json and isinstance(value_json, str):
import json
try:
value = json.loads(value_json)
if len(value) == 1:
value = value["value"]
status = value.get("error", None)
if not status:
status = value.get("status", ErrorCode.UNKNOWN_ERROR)
message = value.get("value") or value.get("message")
if not isinstance(message, str):
value = message
message = message.get("message")
else:
message = value.get("message", None)
except ValueError:
pass
exception_class: Type[WebDriverException]
e = ErrorCode()
error_codes = [item for item in dir(e) if not item.startswith("__")]
for error_code in error_codes:
error_info = getattr(ErrorCode, error_code)
if isinstance(error_info, list) and status in error_info:
exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
break
else:
exception_class = WebDriverException
if not value:
value = response["value"]
if isinstance(value, str):
raise exception_class(value)
if message == "" and "message" in value:
message = value["message"]
screen = None # type: ignore[assignment]
if "screen" in value:
screen = value["screen"]
stacktrace = None
st_value = value.get("stackTrace") or value.get("stacktrace")
if st_value:
if isinstance(st_value, str):
stacktrace = st_value.split("\n")
else:
stacktrace = []
try:
for frame in st_value:
line = frame.get("lineNumber", "")
file = frame.get("fileName", "")
if line:
file = f"{file}:{line}"
meth = frame.get("methodName", "")
if "className" in frame:
meth = f"{frame['className']}.{meth}"
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if 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) # type: ignore[call-arg] # mypy is not smart enough here
E selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: Wrong Credentials! Try again!
E Message: unexpected alert open: {Alert text : Wrong Credentials! Try again!}
E (Session info: chrome=123.0.6312.106)
E Stacktrace:
E GetHandleVerifier [0x00007FF67CFD7032+63090]
E (No symbol) [0x00007FF67CF42C82]
E (No symbol) [0x00007FF67CDDEC65]
E (No symbol) [0x00007FF67CE63B70]
E (No symbol) [0x00007FF67CE46D83]
E (No symbol) [0x00007FF67CE183A8]
E (No symbol) [0x00007FF67CE19441]
E GetHandleVerifier [0x00007FF67D3D25AD+4238317]
E GetHandleVerifier [0x00007FF67D40F70D+4488525]
E GetHandleVerifier [0x00007FF67D4079EF+4456495]
E GetHandleVerifier [0x00007FF67D0B0576+953270]
E (No symbol) [0x00007FF67CF4E54F]
E (No symbol) [0x00007FF67CF49224]
E (No symbol) [0x00007FF67CF4935B]
E (No symbol) [0x00007FF67CF39B94]
E BaseThreadInitThunk [0x00007FFD051B7344+20]
E RtlUserThreadStart [0x00007FFD071C26B1+33]
..\..\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\remote\errorhandler.py:228: UnexpectedAlertPresentException
-
6.89 s
failed(test1-test1)
-
FAILED [100%]
-
test_parametrize.py:13 (test_Login_page[test1-test1])driver =
username = 'test1', password = 'test1'
@pytest.mark.parametrize("username, password",[
("test", "test"),
("fakeUser", "fakePassword"),
("test1", "test1"),
])
#End Parametrized
# We Must provide Username and password in Parameter :
def test_Login_page(driver, username, password):
driver.get("https://trytestingthis.netlify.app/")
user_name = driver.find_element(By.ID, "uname")
user_pass = driver.find_element(By.ID, "pwd")
login_button = driver.find_element(By.XPATH, "//input[@value='Login']")
user_name.send_keys(username)
user_pass.send_keys(password)
login_button.click()
time.sleep(4)
> assert "Login Successful" in driver.page_source
test_parametrize.py:31:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
..\..\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\remote\webdriver.py:448: in page_source
return self.execute(Command.GET_PAGE_SOURCE)["value"]
..\..\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\remote\webdriver.py:347: in execute
self.error_handler.check_response(response)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self =
response = {'status': 500, 'value': '{"value":{"data":{"text":"Wrong Credentials! Try again!"},"error":"unexpected alert open","m...07FF67CF39B94]\\n\\tBaseThreadInitThunk [0x00007FFD051B7344+20]\\n\\tRtlUserThreadStart [0x00007FFD071C26B1+33]\\n"}}'}
def check_response(self, response: Dict[str, Any]) -> None:
"""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 not status or status == ErrorCode.SUCCESS:
return
value = None
message = response.get("message", "")
screen: str = response.get("screen", "")
stacktrace = None
if isinstance(status, int):
value_json = response.get("value", None)
if value_json and isinstance(value_json, str):
import json
try:
value = json.loads(value_json)
if len(value) == 1:
value = value["value"]
status = value.get("error", None)
if not status:
status = value.get("status", ErrorCode.UNKNOWN_ERROR)
message = value.get("value") or value.get("message")
if not isinstance(message, str):
value = message
message = message.get("message")
else:
message = value.get("message", None)
except ValueError:
pass
exception_class: Type[WebDriverException]
e = ErrorCode()
error_codes = [item for item in dir(e) if not item.startswith("__")]
for error_code in error_codes:
error_info = getattr(ErrorCode, error_code)
if isinstance(error_info, list) and status in error_info:
exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
break
else:
exception_class = WebDriverException
if not value:
value = response["value"]
if isinstance(value, str):
raise exception_class(value)
if message == "" and "message" in value:
message = value["message"]
screen = None # type: ignore[assignment]
if "screen" in value:
screen = value["screen"]
stacktrace = None
st_value = value.get("stackTrace") or value.get("stacktrace")
if st_value:
if isinstance(st_value, str):
stacktrace = st_value.split("\n")
else:
stacktrace = []
try:
for frame in st_value:
line = frame.get("lineNumber", "")
file = frame.get("fileName", "")
if line:
file = f"{file}:{line}"
meth = frame.get("methodName", "")
if "className" in frame:
meth = f"{frame['className']}.{meth}"
msg = " at %s (%s)"
msg = msg % (meth, file)
stacktrace.append(msg)
except TypeError:
pass
if 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) # type: ignore[call-arg] # mypy is not smart enough here
E selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: Wrong Credentials! Try again!
E Message: unexpected alert open: {Alert text : Wrong Credentials! Try again!}
E (Session info: chrome=123.0.6312.106)
E Stacktrace:
E GetHandleVerifier [0x00007FF67CFD7032+63090]
E (No symbol) [0x00007FF67CF42C82]
E (No symbol) [0x00007FF67CDDEC65]
E (No symbol) [0x00007FF67CE63B70]
E (No symbol) [0x00007FF67CE46D83]
E (No symbol) [0x00007FF67CE183A8]
E (No symbol) [0x00007FF67CE19441]
E GetHandleVerifier [0x00007FF67D3D25AD+4238317]
E GetHandleVerifier [0x00007FF67D40F70D+4488525]
E GetHandleVerifier [0x00007FF67D4079EF+4456495]
E GetHandleVerifier [0x00007FF67D0B0576+953270]
E (No symbol) [0x00007FF67CF4E54F]
E (No symbol) [0x00007FF67CF49224]
E (No symbol) [0x00007FF67CF4935B]
E (No symbol) [0x00007FF67CF39B94]
E BaseThreadInitThunk [0x00007FFD051B7344+20]
E RtlUserThreadStart [0x00007FFD071C26B1+33]
..\..\AppData\Local\Programs\Python\Python312\Lib\site-packages\selenium\webdriver\remote\errorhandler.py:228: UnexpectedAlertPresentException