Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
UIProject
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
liying
UIProject
Commits
f1823f37
Commit
f1823f37
authored
Feb 22, 2024
by
Administrator
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
2.19提交
parent
d97f8f64
Show whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
22 additions
and
0 deletions
+22
-0
22569bc5-6c0c-4061-9f37-e7747fbab7ed-container.json
...eport/22569bc5-6c0c-4061-9f37-e7747fbab7ed-container.json
+2
-0
247a997a-c300-4948-9d75-cac8544016e9-attachment.txt
...eport/247a997a-c300-4948-9d75-cac8544016e9-attachment.txt
+1
-0
26c2b071-922b-471a-b167-92b3a7ed59a9-result.json
...e_report/26c2b071-922b-471a-b167-92b3a7ed59a9-result.json
+2
-0
7166fe20-a663-4276-9035-69fe93e30632-result.json
...e_report/7166fe20-a663-4276-9035-69fe93e30632-result.json
+2
-0
76b32201-f11d-4b0f-bc0c-6dcf26fb38bf-container.json
...eport/76b32201-f11d-4b0f-bc0c-6dcf26fb38bf-container.json
+2
-0
79331f76-8295-4c3c-b5dc-60b19ad33745-container.json
...eport/79331f76-8295-4c3c-b5dc-60b19ad33745-container.json
+2
-0
d16a584d-ce53-4ab0-9409-be1b6ff9bf76-container.json
...eport/d16a584d-ce53-4ab0-9409-be1b6ff9bf76-container.json
+2
-0
f8fcb926-ca92-4aca-a9ba-cc6328d30cd6-result.json
...e_report/f8fcb926-ca92-4aca-a9ba-cc6328d30cd6-result.json
+2
-0
70b951d2d0019a8a.txt
.../allure_report_html/data/attachments/70b951d2d0019a8a.txt
+1
-0
60b6e3b6e95b5d0c.json
.../allure_report_html/data/test-cases/60b6e3b6e95b5d0c.json
+2
-0
7e8d34515a9dd56c.json
.../allure_report_html/data/test-cases/7e8d34515a9dd56c.json
+2
-0
8f4c29984e1d0a6c.json
.../allure_report_html/data/test-cases/8f4c29984e1d0a6c.json
+2
-0
No files found.
output/allure_report/22569bc5-6c0c-4061-9f37-e7747fbab7ed-container.json
0 → 100644
View file @
f1823f37
{
"uuid"
:
"77f08c93-814f-4c11-851b-d8403141c52b"
,
"children"
:
[
"35229e05-cb73-404c-965b-414f79628f77"
],
"befores"
:
[{
"name"
:
"_xunit_setup_method_fixture_TestLogin"
,
"status"
:
"broken"
,
"statusDetails"
:
{
"message"
:
"selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
from unknown error: web view not found
\n
(Session info: chrome=121.0.6167.185)
\n
Stacktrace:
\n\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n\t
(No symbol) [0x00007FF796014C02]
\n\t
(No symbol) [0x00007FF795EC5AEB]
\n\t
(No symbol) [0x00007FF795EA288C]
\n\t
(No symbol) [0x00007FF795F35DD7]
\n\t
(No symbol) [0x00007FF795F4B40F]
\n\t
(No symbol) [0x00007FF795F2EE53]
\n\t
(No symbol) [0x00007FF795EFF514]
\n\t
(No symbol) [0x00007FF795F00631]
\n\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n\t
(No symbol) [0x00007FF79602126F]
\n\t
(No symbol) [0x00007FF79601C304]
\n\t
(No symbol) [0x00007FF79601C432]
\n\t
(No symbol) [0x00007FF79600BD04]
\n\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]
\n\n
"
,
"trace"
:
" File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
pluggy
\\
_callers.py
\"
, line 166, in _multicall
\n
teardown.throw(outcome._exception)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
setuponly.py
\"
, line 36, in pytest_fixture_setup
\n
return (yield)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
pluggy
\\
_callers.py
\"
, line 102, in _multicall
\n
res = hook_impl.function(*args)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
fixtures.py
\"
, line 1149, in pytest_fixture_setup
\n
result = call_fixture_func(fixturefunc, request, kwargs)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
fixtures.py
\"
, line 916, in call_fixture_func
\n
fixture_result = next(generator)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
python.py
\"
, line 885, in xunit_setup_method_fixture
\n
_call_with_optional_argument(func, method)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
python.py
\"
, line 765, in _call_with_optional_argument
\n
func()
\n
File
\"
D:
\\
UIProject
\\
TestCases
\\
test_login.py
\"
, line 25, in setup_method
\n
self.driver.get('https://rays7.raysgo.com/login')
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py
\"
, line 356, in get
\n
self.execute(Command.GET, {
\"
url
\"
: url})
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py
\"
, line 347, in execute
\n
self.error_handler.check_response(response)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
errorhandler.py
\"
, line 229, in check_response
\n
raise exception_class(message, screen, stacktrace)
\n
"
},
"start"
:
1708599929988
,
"stop"
:
1708599929988
}],
"start"
:
1708599929988
,
"stop"
:
1708599930008
}
\ No newline at end of file
output/allure_report/247a997a-c300-4948-9d75-cac8544016e9-attachment.txt
0 → 100644
View file @
f1823f37
[32m2024-02-22 19:05:29.894[0m | [1mINFO [0m | [36mtest_login[0m:[36mtest_login_success_case001[0m:[36m43[0m - [1m登陆成功[0m
output/allure_report/26c2b071-922b-471a-b167-92b3a7ed59a9-result.json
0 → 100644
View file @
f1823f37
{
"name"
:
"test_login_invalid_username"
,
"status"
:
"broken"
,
"statusDetails"
:
{
"message"
:
"selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
from unknown error: web view not found
\n
(Session info: chrome=121.0.6167.185)
\n
Stacktrace:
\n\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n\t
(No symbol) [0x00007FF796014C02]
\n\t
(No symbol) [0x00007FF795EC5AEB]
\n\t
(No symbol) [0x00007FF795EA288C]
\n\t
(No symbol) [0x00007FF795F35DD7]
\n\t
(No symbol) [0x00007FF795F4B40F]
\n\t
(No symbol) [0x00007FF795F2EE53]
\n\t
(No symbol) [0x00007FF795EFF514]
\n\t
(No symbol) [0x00007FF795F00631]
\n\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n\t
(No symbol) [0x00007FF79602126F]
\n\t
(No symbol) [0x00007FF79601C304]
\n\t
(No symbol) [0x00007FF79601C432]
\n\t
(No symbol) [0x00007FF79600BD04]
\n\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]"
,
"trace"
:
"self = <test_login.TestLogin object at 0x0000020D03B3F5E0>
\n\n
def setup_method(self):
\n
# 在每个测试用例脚本之前执行一次
\n
> self.driver.get('https://rays7.raysgo.com/login')
\n\n
TestCases
\\
test_login.py:25:
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:356: in get
\n
self.execute(Command.GET, {
\"
url
\"
: url})
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:347: in execute
\n
self.error_handler.check_response(response)
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n\n
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x0000020D03B3F880>
\n
response = {'status': 404, 'value': '{
\"
value
\"
:{
\"
error
\"
:
\"
no such window
\"
,
\"
message
\"
:
\"
no such window: target window already closed
\\\\
...07FF79600BD04]
\\\\
n
\\\\
tBaseThreadInitThunk [0x00007FFF3E08257D+29]
\\\\
n
\\\\
tRtlUserThreadStart [0x00007FFF3F9CAA58+40]
\\\\
n
\"
}}'}
\n\n
def check_response(self, response: Dict[str, Any]) -> None:
\n
\"\"\"
Checks that a JSON response from the WebDriver does not have an
\n
error.
\n
\n
:Args:
\n
- response - The JSON response from the WebDriver server as a dictionary
\n
object.
\n
\n
:Raises: If the response contains an error message.
\n
\"\"\"\n
status = response.get(
\"
status
\"
, None)
\n
if not status or status == ErrorCode.SUCCESS:
\n
return
\n
value = None
\n
message = response.get(
\"
message
\"
,
\"\"
)
\n
screen: str = response.get(
\"
screen
\"
,
\"\"
)
\n
stacktrace = None
\n
if isinstance(status, int):
\n
value_json = response.get(
\"
value
\"
, None)
\n
if value_json and isinstance(value_json, str):
\n
import json
\n
\n
try:
\n
value = json.loads(value_json)
\n
if len(value) == 1:
\n
value = value[
\"
value
\"
]
\n
status = value.get(
\"
error
\"
, None)
\n
if not status:
\n
status = value.get(
\"
status
\"
, ErrorCode.UNKNOWN_ERROR)
\n
message = value.get(
\"
value
\"
) or value.get(
\"
message
\"
)
\n
if not isinstance(message, str):
\n
value = message
\n
message = message.get(
\"
message
\"
)
\n
else:
\n
message = value.get(
\"
message
\"
, None)
\n
except ValueError:
\n
pass
\n
\n
exception_class: Type[WebDriverException]
\n
e = ErrorCode()
\n
error_codes = [item for item in dir(e) if not item.startswith(
\"
__
\"
)]
\n
for error_code in error_codes:
\n
error_info = getattr(ErrorCode, error_code)
\n
if isinstance(error_info, list) and status in error_info:
\n
exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
\n
break
\n
else:
\n
exception_class = WebDriverException
\n
\n
if not value:
\n
value = response[
\"
value
\"
]
\n
if isinstance(value, str):
\n
raise exception_class(value)
\n
if message ==
\"\"
and
\"
message
\"
in value:
\n
message = value[
\"
message
\"
]
\n
\n
screen = None # type: ignore[assignment]
\n
if
\"
screen
\"
in value:
\n
screen = value[
\"
screen
\"
]
\n
\n
stacktrace = None
\n
st_value = value.get(
\"
stackTrace
\"
) or value.get(
\"
stacktrace
\"
)
\n
if st_value:
\n
if isinstance(st_value, str):
\n
stacktrace = st_value.split(
\"\\
n
\"
)
\n
else:
\n
stacktrace = []
\n
try:
\n
for frame in st_value:
\n
line = frame.get(
\"
lineNumber
\"
,
\"\"
)
\n
file = frame.get(
\"
fileName
\"
,
\"
<anonymous>
\"
)
\n
if line:
\n
file = f
\"
{file}:{line}
\"\n
meth = frame.get(
\"
methodName
\"
,
\"
<anonymous>
\"
)
\n
if
\"
className
\"
in frame:
\n
meth = f
\"
{frame['className']}.{meth}
\"\n
msg =
\"
at %s (%s)
\"\n
msg = msg % (meth, file)
\n
stacktrace.append(msg)
\n
except TypeError:
\n
pass
\n
if exception_class == UnexpectedAlertPresentException:
\n
alert_text = None
\n
if
\"
data
\"
in value:
\n
alert_text = value[
\"
data
\"
].get(
\"
text
\"
)
\n
elif
\"
alert
\"
in value:
\n
alert_text = value[
\"
alert
\"
].get(
\"
text
\"
)
\n
raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here
\n
> raise exception_class(message, screen, stacktrace)
\n
E selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
E from unknown error: web view not found
\n
E (Session info: chrome=121.0.6167.185)
\n
E Stacktrace:
\n
E
\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n
E
\t
(No symbol) [0x00007FF796014C02]
\n
E
\t
(No symbol) [0x00007FF795EC5AEB]
\n
E
\t
(No symbol) [0x00007FF795EA288C]
\n
E
\t
(No symbol) [0x00007FF795F35DD7]
\n
E
\t
(No symbol) [0x00007FF795F4B40F]
\n
E
\t
(No symbol) [0x00007FF795F2EE53]
\n
E
\t
(No symbol) [0x00007FF795EFF514]
\n
E
\t
(No symbol) [0x00007FF795F00631]
\n
E
\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n
E
\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n
E
\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n
E
\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n
E
\t
(No symbol) [0x00007FF79602126F]
\n
E
\t
(No symbol) [0x00007FF79601C304]
\n
E
\t
(No symbol) [0x00007FF79601C432]
\n
E
\t
(No symbol) [0x00007FF79600BD04]
\n
E
\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n
E
\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]
\n\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
errorhandler.py:229: NoSuchWindowException"
},
"start"
:
1708599929987
,
"stop"
:
1708599929987
,
"uuid"
:
"35229e05-cb73-404c-965b-414f79628f77"
,
"historyId"
:
"26544122cf70e22e96bace727415c5ce"
,
"testCaseId"
:
"26544122cf70e22e96bace727415c5ce"
,
"fullName"
:
"TestCases.test_login.TestLogin#test_login_invalid_username"
,
"labels"
:
[{
"name"
:
"parentSuite"
,
"value"
:
"TestCases"
},
{
"name"
:
"suite"
,
"value"
:
"test_login"
},
{
"name"
:
"subSuite"
,
"value"
:
"TestLogin"
},
{
"name"
:
"host"
,
"value"
:
"DCG027335"
},
{
"name"
:
"thread"
,
"value"
:
"25188-MainThread"
},
{
"name"
:
"framework"
,
"value"
:
"pytest"
},
{
"name"
:
"language"
,
"value"
:
"cpython3"
},
{
"name"
:
"package"
,
"value"
:
"TestCases.test_login"
}]}
\ No newline at end of file
output/allure_report/7166fe20-a663-4276-9035-69fe93e30632-result.json
0 → 100644
View file @
f1823f37
{
"name"
:
"test_login_invalid_password"
,
"status"
:
"broken"
,
"statusDetails"
:
{
"message"
:
"selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
from unknown error: web view not found
\n
(Session info: chrome=121.0.6167.185)
\n
Stacktrace:
\n\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n\t
(No symbol) [0x00007FF796014C02]
\n\t
(No symbol) [0x00007FF795EC5AEB]
\n\t
(No symbol) [0x00007FF795EA288C]
\n\t
(No symbol) [0x00007FF795F35DD7]
\n\t
(No symbol) [0x00007FF795F4B40F]
\n\t
(No symbol) [0x00007FF795F2EE53]
\n\t
(No symbol) [0x00007FF795EFF514]
\n\t
(No symbol) [0x00007FF795F00631]
\n\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n\t
(No symbol) [0x00007FF79602126F]
\n\t
(No symbol) [0x00007FF79601C304]
\n\t
(No symbol) [0x00007FF79601C432]
\n\t
(No symbol) [0x00007FF79600BD04]
\n\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]"
,
"trace"
:
"self = <test_login.TestLogin object at 0x0000020D03B3F7C0>
\n\n
def setup_method(self):
\n
# 在每个测试用例脚本之前执行一次
\n
> self.driver.get('https://rays7.raysgo.com/login')
\n\n
TestCases
\\
test_login.py:25:
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:356: in get
\n
self.execute(Command.GET, {
\"
url
\"
: url})
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:347: in execute
\n
self.error_handler.check_response(response)
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n\n
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x0000020D03B3F880>
\n
response = {'status': 404, 'value': '{
\"
value
\"
:{
\"
error
\"
:
\"
no such window
\"
,
\"
message
\"
:
\"
no such window: target window already closed
\\\\
...07FF79600BD04]
\\\\
n
\\\\
tBaseThreadInitThunk [0x00007FFF3E08257D+29]
\\\\
n
\\\\
tRtlUserThreadStart [0x00007FFF3F9CAA58+40]
\\\\
n
\"
}}'}
\n\n
def check_response(self, response: Dict[str, Any]) -> None:
\n
\"\"\"
Checks that a JSON response from the WebDriver does not have an
\n
error.
\n
\n
:Args:
\n
- response - The JSON response from the WebDriver server as a dictionary
\n
object.
\n
\n
:Raises: If the response contains an error message.
\n
\"\"\"\n
status = response.get(
\"
status
\"
, None)
\n
if not status or status == ErrorCode.SUCCESS:
\n
return
\n
value = None
\n
message = response.get(
\"
message
\"
,
\"\"
)
\n
screen: str = response.get(
\"
screen
\"
,
\"\"
)
\n
stacktrace = None
\n
if isinstance(status, int):
\n
value_json = response.get(
\"
value
\"
, None)
\n
if value_json and isinstance(value_json, str):
\n
import json
\n
\n
try:
\n
value = json.loads(value_json)
\n
if len(value) == 1:
\n
value = value[
\"
value
\"
]
\n
status = value.get(
\"
error
\"
, None)
\n
if not status:
\n
status = value.get(
\"
status
\"
, ErrorCode.UNKNOWN_ERROR)
\n
message = value.get(
\"
value
\"
) or value.get(
\"
message
\"
)
\n
if not isinstance(message, str):
\n
value = message
\n
message = message.get(
\"
message
\"
)
\n
else:
\n
message = value.get(
\"
message
\"
, None)
\n
except ValueError:
\n
pass
\n
\n
exception_class: Type[WebDriverException]
\n
e = ErrorCode()
\n
error_codes = [item for item in dir(e) if not item.startswith(
\"
__
\"
)]
\n
for error_code in error_codes:
\n
error_info = getattr(ErrorCode, error_code)
\n
if isinstance(error_info, list) and status in error_info:
\n
exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
\n
break
\n
else:
\n
exception_class = WebDriverException
\n
\n
if not value:
\n
value = response[
\"
value
\"
]
\n
if isinstance(value, str):
\n
raise exception_class(value)
\n
if message ==
\"\"
and
\"
message
\"
in value:
\n
message = value[
\"
message
\"
]
\n
\n
screen = None # type: ignore[assignment]
\n
if
\"
screen
\"
in value:
\n
screen = value[
\"
screen
\"
]
\n
\n
stacktrace = None
\n
st_value = value.get(
\"
stackTrace
\"
) or value.get(
\"
stacktrace
\"
)
\n
if st_value:
\n
if isinstance(st_value, str):
\n
stacktrace = st_value.split(
\"\\
n
\"
)
\n
else:
\n
stacktrace = []
\n
try:
\n
for frame in st_value:
\n
line = frame.get(
\"
lineNumber
\"
,
\"\"
)
\n
file = frame.get(
\"
fileName
\"
,
\"
<anonymous>
\"
)
\n
if line:
\n
file = f
\"
{file}:{line}
\"\n
meth = frame.get(
\"
methodName
\"
,
\"
<anonymous>
\"
)
\n
if
\"
className
\"
in frame:
\n
meth = f
\"
{frame['className']}.{meth}
\"\n
msg =
\"
at %s (%s)
\"\n
msg = msg % (meth, file)
\n
stacktrace.append(msg)
\n
except TypeError:
\n
pass
\n
if exception_class == UnexpectedAlertPresentException:
\n
alert_text = None
\n
if
\"
data
\"
in value:
\n
alert_text = value[
\"
data
\"
].get(
\"
text
\"
)
\n
elif
\"
alert
\"
in value:
\n
alert_text = value[
\"
alert
\"
].get(
\"
text
\"
)
\n
raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here
\n
> raise exception_class(message, screen, stacktrace)
\n
E selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
E from unknown error: web view not found
\n
E (Session info: chrome=121.0.6167.185)
\n
E Stacktrace:
\n
E
\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n
E
\t
(No symbol) [0x00007FF796014C02]
\n
E
\t
(No symbol) [0x00007FF795EC5AEB]
\n
E
\t
(No symbol) [0x00007FF795EA288C]
\n
E
\t
(No symbol) [0x00007FF795F35DD7]
\n
E
\t
(No symbol) [0x00007FF795F4B40F]
\n
E
\t
(No symbol) [0x00007FF795F2EE53]
\n
E
\t
(No symbol) [0x00007FF795EFF514]
\n
E
\t
(No symbol) [0x00007FF795F00631]
\n
E
\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n
E
\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n
E
\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n
E
\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n
E
\t
(No symbol) [0x00007FF79602126F]
\n
E
\t
(No symbol) [0x00007FF79601C304]
\n
E
\t
(No symbol) [0x00007FF79601C432]
\n
E
\t
(No symbol) [0x00007FF79600BD04]
\n
E
\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n
E
\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]
\n\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
errorhandler.py:229: NoSuchWindowException"
},
"start"
:
1708599930011
,
"stop"
:
1708599930011
,
"uuid"
:
"a09da53d-b49b-4e21-804c-51cb4e443fb9"
,
"historyId"
:
"bf01a7f441fea677280889d0ba346cc6"
,
"testCaseId"
:
"bf01a7f441fea677280889d0ba346cc6"
,
"fullName"
:
"TestCases.test_login.TestLogin#test_login_invalid_password"
,
"labels"
:
[{
"name"
:
"parentSuite"
,
"value"
:
"TestCases"
},
{
"name"
:
"suite"
,
"value"
:
"test_login"
},
{
"name"
:
"subSuite"
,
"value"
:
"TestLogin"
},
{
"name"
:
"host"
,
"value"
:
"DCG027335"
},
{
"name"
:
"thread"
,
"value"
:
"25188-MainThread"
},
{
"name"
:
"framework"
,
"value"
:
"pytest"
},
{
"name"
:
"language"
,
"value"
:
"cpython3"
},
{
"name"
:
"package"
,
"value"
:
"TestCases.test_login"
}]}
\ No newline at end of file
output/allure_report/76b32201-f11d-4b0f-bc0c-6dcf26fb38bf-container.json
0 → 100644
View file @
f1823f37
{
"uuid"
:
"14191403-de6a-4410-9d99-ce1594d6dee0"
,
"children"
:
[
"df85a7ec-5ca4-4998-844e-7afb594cf638"
,
"35229e05-cb73-404c-965b-414f79628f77"
,
"a09da53d-b49b-4e21-804c-51cb4e443fb9"
],
"befores"
:
[{
"name"
:
"_xunit_setup_class_fixture_TestLogin"
,
"status"
:
"passed"
,
"start"
:
1708599911817
,
"stop"
:
1708599913397
}],
"afters"
:
[{
"name"
:
"_xunit_setup_class_fixture_TestLogin::0"
,
"status"
:
"passed"
,
"start"
:
1708599930028
,
"stop"
:
1708599932088
}],
"start"
:
1708599911817
,
"stop"
:
1708599932088
}
\ No newline at end of file
output/allure_report/79331f76-8295-4c3c-b5dc-60b19ad33745-container.json
0 → 100644
View file @
f1823f37
{
"uuid"
:
"8e6e691c-bdb6-4049-9c48-21a5237fdb91"
,
"children"
:
[
"a09da53d-b49b-4e21-804c-51cb4e443fb9"
],
"befores"
:
[{
"name"
:
"_xunit_setup_method_fixture_TestLogin"
,
"status"
:
"broken"
,
"statusDetails"
:
{
"message"
:
"selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
from unknown error: web view not found
\n
(Session info: chrome=121.0.6167.185)
\n
Stacktrace:
\n\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n\t
(No symbol) [0x00007FF796014C02]
\n\t
(No symbol) [0x00007FF795EC5AEB]
\n\t
(No symbol) [0x00007FF795EA288C]
\n\t
(No symbol) [0x00007FF795F35DD7]
\n\t
(No symbol) [0x00007FF795F4B40F]
\n\t
(No symbol) [0x00007FF795F2EE53]
\n\t
(No symbol) [0x00007FF795EFF514]
\n\t
(No symbol) [0x00007FF795F00631]
\n\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n\t
(No symbol) [0x00007FF79602126F]
\n\t
(No symbol) [0x00007FF79601C304]
\n\t
(No symbol) [0x00007FF79601C432]
\n\t
(No symbol) [0x00007FF79600BD04]
\n\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]
\n\n
"
,
"trace"
:
" File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
pluggy
\\
_callers.py
\"
, line 166, in _multicall
\n
teardown.throw(outcome._exception)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
setuponly.py
\"
, line 36, in pytest_fixture_setup
\n
return (yield)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
pluggy
\\
_callers.py
\"
, line 102, in _multicall
\n
res = hook_impl.function(*args)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
fixtures.py
\"
, line 1149, in pytest_fixture_setup
\n
result = call_fixture_func(fixturefunc, request, kwargs)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
fixtures.py
\"
, line 916, in call_fixture_func
\n
fixture_result = next(generator)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
python.py
\"
, line 885, in xunit_setup_method_fixture
\n
_call_with_optional_argument(func, method)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
python.py
\"
, line 765, in _call_with_optional_argument
\n
func()
\n
File
\"
D:
\\
UIProject
\\
TestCases
\\
test_login.py
\"
, line 25, in setup_method
\n
self.driver.get('https://rays7.raysgo.com/login')
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py
\"
, line 356, in get
\n
self.execute(Command.GET, {
\"
url
\"
: url})
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py
\"
, line 347, in execute
\n
self.error_handler.check_response(response)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
errorhandler.py
\"
, line 229, in check_response
\n
raise exception_class(message, screen, stacktrace)
\n
"
},
"start"
:
1708599930011
,
"stop"
:
1708599930012
}],
"start"
:
1708599930011
,
"stop"
:
1708599930028
}
\ No newline at end of file
output/allure_report/d16a584d-ce53-4ab0-9409-be1b6ff9bf76-container.json
0 → 100644
View file @
f1823f37
{
"uuid"
:
"fba3a179-5521-4a64-9d3f-1ee26147199e"
,
"children"
:
[
"df85a7ec-5ca4-4998-844e-7afb594cf638"
],
"befores"
:
[{
"name"
:
"_xunit_setup_method_fixture_TestLogin"
,
"status"
:
"passed"
,
"start"
:
1708599913397
,
"stop"
:
1708599917544
}],
"afters"
:
[{
"name"
:
"_xunit_setup_method_fixture_TestLogin::0"
,
"status"
:
"passed"
,
"start"
:
1708599929985
,
"stop"
:
1708599929985
}],
"start"
:
1708599913397
,
"stop"
:
1708599929985
}
\ No newline at end of file
output/allure_report/f8fcb926-ca92-4aca-a9ba-cc6328d30cd6-result.json
0 → 100644
View file @
f1823f37
{
"name"
:
"test_login_success_case001"
,
"status"
:
"broken"
,
"statusDetails"
:
{
"message"
:
"selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
from unknown error: web view not found
\n
(Session info: chrome=121.0.6167.185)
\n
Stacktrace:
\n\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n\t
(No symbol) [0x00007FF796014C02]
\n\t
(No symbol) [0x00007FF795EC5AEB]
\n\t
(No symbol) [0x00007FF795EA288C]
\n\t
(No symbol) [0x00007FF795F35DD7]
\n\t
(No symbol) [0x00007FF795F4B40F]
\n\t
(No symbol) [0x00007FF795F2EE53]
\n\t
(No symbol) [0x00007FF795EFF514]
\n\t
(No symbol) [0x00007FF795F00631]
\n\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n\t
(No symbol) [0x00007FF79602126F]
\n\t
(No symbol) [0x00007FF79601C304]
\n\t
(No symbol) [0x00007FF79601C432]
\n\t
(No symbol) [0x00007FF79600BD04]
\n\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]"
,
"trace"
:
"self = <test_login.TestLogin object at 0x0000020D03B3F3A0>
\n\n
@pytest.mark.run(order=1)
\n
def test_login_success_case001(self):
\n
self.login_page.login_username(username=
\"
17373027967
\"
, password=
\"
3149390154Li
\"
)
\n
# 断言 登陆成功后的页面跳转
\n
logger.info(
\"
登陆成功
\"
)
\n
> assert
\"
https://rays7.raysgo.com/rays7/home
\"
== self.driver.current_url
\n\n
TestCases
\\
test_login.py:44:
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:437: in current_url
\n
return self.execute(Command.GET_CURRENT_URL)[
\"
value
\"
]
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:347: in execute
\n
self.error_handler.check_response(response)
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n\n
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x0000020D03B3F880>
\n
response = {'status': 404, 'value': '{
\"
value
\"
:{
\"
error
\"
:
\"
no such window
\"
,
\"
message
\"
:
\"
no such window: target window already closed
\\\\
...07FF79600BD04]
\\\\
n
\\\\
tBaseThreadInitThunk [0x00007FFF3E08257D+29]
\\\\
n
\\\\
tRtlUserThreadStart [0x00007FFF3F9CAA58+40]
\\\\
n
\"
}}'}
\n\n
def check_response(self, response: Dict[str, Any]) -> None:
\n
\"\"\"
Checks that a JSON response from the WebDriver does not have an
\n
error.
\n
\n
:Args:
\n
- response - The JSON response from the WebDriver server as a dictionary
\n
object.
\n
\n
:Raises: If the response contains an error message.
\n
\"\"\"\n
status = response.get(
\"
status
\"
, None)
\n
if not status or status == ErrorCode.SUCCESS:
\n
return
\n
value = None
\n
message = response.get(
\"
message
\"
,
\"\"
)
\n
screen: str = response.get(
\"
screen
\"
,
\"\"
)
\n
stacktrace = None
\n
if isinstance(status, int):
\n
value_json = response.get(
\"
value
\"
, None)
\n
if value_json and isinstance(value_json, str):
\n
import json
\n
\n
try:
\n
value = json.loads(value_json)
\n
if len(value) == 1:
\n
value = value[
\"
value
\"
]
\n
status = value.get(
\"
error
\"
, None)
\n
if not status:
\n
status = value.get(
\"
status
\"
, ErrorCode.UNKNOWN_ERROR)
\n
message = value.get(
\"
value
\"
) or value.get(
\"
message
\"
)
\n
if not isinstance(message, str):
\n
value = message
\n
message = message.get(
\"
message
\"
)
\n
else:
\n
message = value.get(
\"
message
\"
, None)
\n
except ValueError:
\n
pass
\n
\n
exception_class: Type[WebDriverException]
\n
e = ErrorCode()
\n
error_codes = [item for item in dir(e) if not item.startswith(
\"
__
\"
)]
\n
for error_code in error_codes:
\n
error_info = getattr(ErrorCode, error_code)
\n
if isinstance(error_info, list) and status in error_info:
\n
exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
\n
break
\n
else:
\n
exception_class = WebDriverException
\n
\n
if not value:
\n
value = response[
\"
value
\"
]
\n
if isinstance(value, str):
\n
raise exception_class(value)
\n
if message ==
\"\"
and
\"
message
\"
in value:
\n
message = value[
\"
message
\"
]
\n
\n
screen = None # type: ignore[assignment]
\n
if
\"
screen
\"
in value:
\n
screen = value[
\"
screen
\"
]
\n
\n
stacktrace = None
\n
st_value = value.get(
\"
stackTrace
\"
) or value.get(
\"
stacktrace
\"
)
\n
if st_value:
\n
if isinstance(st_value, str):
\n
stacktrace = st_value.split(
\"\\
n
\"
)
\n
else:
\n
stacktrace = []
\n
try:
\n
for frame in st_value:
\n
line = frame.get(
\"
lineNumber
\"
,
\"\"
)
\n
file = frame.get(
\"
fileName
\"
,
\"
<anonymous>
\"
)
\n
if line:
\n
file = f
\"
{file}:{line}
\"\n
meth = frame.get(
\"
methodName
\"
,
\"
<anonymous>
\"
)
\n
if
\"
className
\"
in frame:
\n
meth = f
\"
{frame['className']}.{meth}
\"\n
msg =
\"
at %s (%s)
\"\n
msg = msg % (meth, file)
\n
stacktrace.append(msg)
\n
except TypeError:
\n
pass
\n
if exception_class == UnexpectedAlertPresentException:
\n
alert_text = None
\n
if
\"
data
\"
in value:
\n
alert_text = value[
\"
data
\"
].get(
\"
text
\"
)
\n
elif
\"
alert
\"
in value:
\n
alert_text = value[
\"
alert
\"
].get(
\"
text
\"
)
\n
raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here
\n
> raise exception_class(message, screen, stacktrace)
\n
E selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
E from unknown error: web view not found
\n
E (Session info: chrome=121.0.6167.185)
\n
E Stacktrace:
\n
E
\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n
E
\t
(No symbol) [0x00007FF796014C02]
\n
E
\t
(No symbol) [0x00007FF795EC5AEB]
\n
E
\t
(No symbol) [0x00007FF795EA288C]
\n
E
\t
(No symbol) [0x00007FF795F35DD7]
\n
E
\t
(No symbol) [0x00007FF795F4B40F]
\n
E
\t
(No symbol) [0x00007FF795F2EE53]
\n
E
\t
(No symbol) [0x00007FF795EFF514]
\n
E
\t
(No symbol) [0x00007FF795F00631]
\n
E
\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n
E
\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n
E
\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n
E
\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n
E
\t
(No symbol) [0x00007FF79602126F]
\n
E
\t
(No symbol) [0x00007FF79601C304]
\n
E
\t
(No symbol) [0x00007FF79601C432]
\n
E
\t
(No symbol) [0x00007FF79600BD04]
\n
E
\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n
E
\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]
\n\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
errorhandler.py:229: NoSuchWindowException"
},
"attachments"
:
[{
"name"
:
"stderr"
,
"source"
:
"247a997a-c300-4948-9d75-cac8544016e9-attachment.txt"
,
"type"
:
"text/plain"
}],
"start"
:
1708599917546
,
"stop"
:
1708599929897
,
"uuid"
:
"df85a7ec-5ca4-4998-844e-7afb594cf638"
,
"historyId"
:
"5452e80e131503044fb24882c5820a04"
,
"testCaseId"
:
"5452e80e131503044fb24882c5820a04"
,
"fullName"
:
"TestCases.test_login.TestLogin#test_login_success_case001"
,
"labels"
:
[{
"name"
:
"tag"
,
"value"
:
"run(order=1)"
},
{
"name"
:
"parentSuite"
,
"value"
:
"TestCases"
},
{
"name"
:
"suite"
,
"value"
:
"test_login"
},
{
"name"
:
"subSuite"
,
"value"
:
"TestLogin"
},
{
"name"
:
"host"
,
"value"
:
"DCG027335"
},
{
"name"
:
"thread"
,
"value"
:
"25188-MainThread"
},
{
"name"
:
"framework"
,
"value"
:
"pytest"
},
{
"name"
:
"language"
,
"value"
:
"cpython3"
},
{
"name"
:
"package"
,
"value"
:
"TestCases.test_login"
}]}
\ No newline at end of file
output/allure_report_html/data/attachments/70b951d2d0019a8a.txt
0 → 100644
View file @
f1823f37
[32m2024-02-22 19:05:29.894[0m | [1mINFO [0m | [36mtest_login[0m:[36mtest_login_success_case001[0m:[36m43[0m - [1m登陆成功[0m
output/allure_report_html/data/test-cases/60b6e3b6e95b5d0c.json
0 → 100644
View file @
f1823f37
{
"uid"
:
"60b6e3b6e95b5d0c"
,
"name"
:
"test_login_success_case001"
,
"fullName"
:
"TestCases.test_login.TestLogin#test_login_success_case001"
,
"historyId"
:
"5452e80e131503044fb24882c5820a04"
,
"time"
:{
"start"
:
1708599917546
,
"stop"
:
1708599929897
,
"duration"
:
12351
},
"status"
:
"broken"
,
"statusMessage"
:
"selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
from unknown error: web view not found
\n
(Session info: chrome=121.0.6167.185)
\n
Stacktrace:
\n\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n\t
(No symbol) [0x00007FF796014C02]
\n\t
(No symbol) [0x00007FF795EC5AEB]
\n\t
(No symbol) [0x00007FF795EA288C]
\n\t
(No symbol) [0x00007FF795F35DD7]
\n\t
(No symbol) [0x00007FF795F4B40F]
\n\t
(No symbol) [0x00007FF795F2EE53]
\n\t
(No symbol) [0x00007FF795EFF514]
\n\t
(No symbol) [0x00007FF795F00631]
\n\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n\t
(No symbol) [0x00007FF79602126F]
\n\t
(No symbol) [0x00007FF79601C304]
\n\t
(No symbol) [0x00007FF79601C432]
\n\t
(No symbol) [0x00007FF79600BD04]
\n\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]"
,
"statusTrace"
:
"self = <test_login.TestLogin object at 0x0000020D03B3F3A0>
\n\n
@pytest.mark.run(order=1)
\n
def test_login_success_case001(self):
\n
self.login_page.login_username(username=
\"
17373027967
\"
, password=
\"
3149390154Li
\"
)
\n
# 断言 登陆成功后的页面跳转
\n
logger.info(
\"
登陆成功
\"
)
\n
> assert
\"
https://rays7.raysgo.com/rays7/home
\"
== self.driver.current_url
\n\n
TestCases
\\
test_login.py:44:
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:437: in current_url
\n
return self.execute(Command.GET_CURRENT_URL)[
\"
value
\"
]
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:347: in execute
\n
self.error_handler.check_response(response)
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n\n
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x0000020D03B3F880>
\n
response = {'status': 404, 'value': '{
\"
value
\"
:{
\"
error
\"
:
\"
no such window
\"
,
\"
message
\"
:
\"
no such window: target window already closed
\\\\
...07FF79600BD04]
\\\\
n
\\\\
tBaseThreadInitThunk [0x00007FFF3E08257D+29]
\\\\
n
\\\\
tRtlUserThreadStart [0x00007FFF3F9CAA58+40]
\\\\
n
\"
}}'}
\n\n
def check_response(self, response: Dict[str, Any]) -> None:
\n
\"\"\"
Checks that a JSON response from the WebDriver does not have an
\n
error.
\n
\n
:Args:
\n
- response - The JSON response from the WebDriver server as a dictionary
\n
object.
\n
\n
:Raises: If the response contains an error message.
\n
\"\"\"\n
status = response.get(
\"
status
\"
, None)
\n
if not status or status == ErrorCode.SUCCESS:
\n
return
\n
value = None
\n
message = response.get(
\"
message
\"
,
\"\"
)
\n
screen: str = response.get(
\"
screen
\"
,
\"\"
)
\n
stacktrace = None
\n
if isinstance(status, int):
\n
value_json = response.get(
\"
value
\"
, None)
\n
if value_json and isinstance(value_json, str):
\n
import json
\n
\n
try:
\n
value = json.loads(value_json)
\n
if len(value) == 1:
\n
value = value[
\"
value
\"
]
\n
status = value.get(
\"
error
\"
, None)
\n
if not status:
\n
status = value.get(
\"
status
\"
, ErrorCode.UNKNOWN_ERROR)
\n
message = value.get(
\"
value
\"
) or value.get(
\"
message
\"
)
\n
if not isinstance(message, str):
\n
value = message
\n
message = message.get(
\"
message
\"
)
\n
else:
\n
message = value.get(
\"
message
\"
, None)
\n
except ValueError:
\n
pass
\n
\n
exception_class: Type[WebDriverException]
\n
e = ErrorCode()
\n
error_codes = [item for item in dir(e) if not item.startswith(
\"
__
\"
)]
\n
for error_code in error_codes:
\n
error_info = getattr(ErrorCode, error_code)
\n
if isinstance(error_info, list) and status in error_info:
\n
exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
\n
break
\n
else:
\n
exception_class = WebDriverException
\n
\n
if not value:
\n
value = response[
\"
value
\"
]
\n
if isinstance(value, str):
\n
raise exception_class(value)
\n
if message ==
\"\"
and
\"
message
\"
in value:
\n
message = value[
\"
message
\"
]
\n
\n
screen = None # type: ignore[assignment]
\n
if
\"
screen
\"
in value:
\n
screen = value[
\"
screen
\"
]
\n
\n
stacktrace = None
\n
st_value = value.get(
\"
stackTrace
\"
) or value.get(
\"
stacktrace
\"
)
\n
if st_value:
\n
if isinstance(st_value, str):
\n
stacktrace = st_value.split(
\"\\
n
\"
)
\n
else:
\n
stacktrace = []
\n
try:
\n
for frame in st_value:
\n
line = frame.get(
\"
lineNumber
\"
,
\"\"
)
\n
file = frame.get(
\"
fileName
\"
,
\"
<anonymous>
\"
)
\n
if line:
\n
file = f
\"
{file}:{line}
\"\n
meth = frame.get(
\"
methodName
\"
,
\"
<anonymous>
\"
)
\n
if
\"
className
\"
in frame:
\n
meth = f
\"
{frame['className']}.{meth}
\"\n
msg =
\"
at %s (%s)
\"\n
msg = msg % (meth, file)
\n
stacktrace.append(msg)
\n
except TypeError:
\n
pass
\n
if exception_class == UnexpectedAlertPresentException:
\n
alert_text = None
\n
if
\"
data
\"
in value:
\n
alert_text = value[
\"
data
\"
].get(
\"
text
\"
)
\n
elif
\"
alert
\"
in value:
\n
alert_text = value[
\"
alert
\"
].get(
\"
text
\"
)
\n
raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here
\n
> raise exception_class(message, screen, stacktrace)
\n
E selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
E from unknown error: web view not found
\n
E (Session info: chrome=121.0.6167.185)
\n
E Stacktrace:
\n
E
\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n
E
\t
(No symbol) [0x00007FF796014C02]
\n
E
\t
(No symbol) [0x00007FF795EC5AEB]
\n
E
\t
(No symbol) [0x00007FF795EA288C]
\n
E
\t
(No symbol) [0x00007FF795F35DD7]
\n
E
\t
(No symbol) [0x00007FF795F4B40F]
\n
E
\t
(No symbol) [0x00007FF795F2EE53]
\n
E
\t
(No symbol) [0x00007FF795EFF514]
\n
E
\t
(No symbol) [0x00007FF795F00631]
\n
E
\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n
E
\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n
E
\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n
E
\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n
E
\t
(No symbol) [0x00007FF79602126F]
\n
E
\t
(No symbol) [0x00007FF79601C304]
\n
E
\t
(No symbol) [0x00007FF79601C432]
\n
E
\t
(No symbol) [0x00007FF79600BD04]
\n
E
\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n
E
\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]
\n\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
errorhandler.py:229: NoSuchWindowException"
,
"flaky"
:
false
,
"newFailed"
:
false
,
"newBroken"
:
false
,
"newPassed"
:
false
,
"retriesCount"
:
0
,
"retriesStatusChange"
:
false
,
"beforeStages"
:[{
"name"
:
"_xunit_setup_class_fixture_TestLogin"
,
"time"
:{
"start"
:
1708599911817
,
"stop"
:
1708599913397
,
"duration"
:
1580
},
"status"
:
"passed"
,
"steps"
:[],
"attachments"
:[],
"parameters"
:[],
"attachmentStep"
:
false
,
"stepsCount"
:
0
,
"hasContent"
:
false
,
"shouldDisplayMessage"
:
false
,
"attachmentsCount"
:
0
},{
"name"
:
"_xunit_setup_method_fixture_TestLogin"
,
"time"
:{
"start"
:
1708599913397
,
"stop"
:
1708599917544
,
"duration"
:
4147
},
"status"
:
"passed"
,
"steps"
:[],
"attachments"
:[],
"parameters"
:[],
"attachmentStep"
:
false
,
"stepsCount"
:
0
,
"hasContent"
:
false
,
"shouldDisplayMessage"
:
false
,
"attachmentsCount"
:
0
}],
"testStage"
:{
"status"
:
"broken"
,
"statusMessage"
:
"selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
from unknown error: web view not found
\n
(Session info: chrome=121.0.6167.185)
\n
Stacktrace:
\n\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n\t
(No symbol) [0x00007FF796014C02]
\n\t
(No symbol) [0x00007FF795EC5AEB]
\n\t
(No symbol) [0x00007FF795EA288C]
\n\t
(No symbol) [0x00007FF795F35DD7]
\n\t
(No symbol) [0x00007FF795F4B40F]
\n\t
(No symbol) [0x00007FF795F2EE53]
\n\t
(No symbol) [0x00007FF795EFF514]
\n\t
(No symbol) [0x00007FF795F00631]
\n\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n\t
(No symbol) [0x00007FF79602126F]
\n\t
(No symbol) [0x00007FF79601C304]
\n\t
(No symbol) [0x00007FF79601C432]
\n\t
(No symbol) [0x00007FF79600BD04]
\n\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]"
,
"statusTrace"
:
"self = <test_login.TestLogin object at 0x0000020D03B3F3A0>
\n\n
@pytest.mark.run(order=1)
\n
def test_login_success_case001(self):
\n
self.login_page.login_username(username=
\"
17373027967
\"
, password=
\"
3149390154Li
\"
)
\n
# 断言 登陆成功后的页面跳转
\n
logger.info(
\"
登陆成功
\"
)
\n
> assert
\"
https://rays7.raysgo.com/rays7/home
\"
== self.driver.current_url
\n\n
TestCases
\\
test_login.py:44:
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:437: in current_url
\n
return self.execute(Command.GET_CURRENT_URL)[
\"
value
\"
]
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:347: in execute
\n
self.error_handler.check_response(response)
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n\n
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x0000020D03B3F880>
\n
response = {'status': 404, 'value': '{
\"
value
\"
:{
\"
error
\"
:
\"
no such window
\"
,
\"
message
\"
:
\"
no such window: target window already closed
\\\\
...07FF79600BD04]
\\\\
n
\\\\
tBaseThreadInitThunk [0x00007FFF3E08257D+29]
\\\\
n
\\\\
tRtlUserThreadStart [0x00007FFF3F9CAA58+40]
\\\\
n
\"
}}'}
\n\n
def check_response(self, response: Dict[str, Any]) -> None:
\n
\"\"\"
Checks that a JSON response from the WebDriver does not have an
\n
error.
\n
\n
:Args:
\n
- response - The JSON response from the WebDriver server as a dictionary
\n
object.
\n
\n
:Raises: If the response contains an error message.
\n
\"\"\"\n
status = response.get(
\"
status
\"
, None)
\n
if not status or status == ErrorCode.SUCCESS:
\n
return
\n
value = None
\n
message = response.get(
\"
message
\"
,
\"\"
)
\n
screen: str = response.get(
\"
screen
\"
,
\"\"
)
\n
stacktrace = None
\n
if isinstance(status, int):
\n
value_json = response.get(
\"
value
\"
, None)
\n
if value_json and isinstance(value_json, str):
\n
import json
\n
\n
try:
\n
value = json.loads(value_json)
\n
if len(value) == 1:
\n
value = value[
\"
value
\"
]
\n
status = value.get(
\"
error
\"
, None)
\n
if not status:
\n
status = value.get(
\"
status
\"
, ErrorCode.UNKNOWN_ERROR)
\n
message = value.get(
\"
value
\"
) or value.get(
\"
message
\"
)
\n
if not isinstance(message, str):
\n
value = message
\n
message = message.get(
\"
message
\"
)
\n
else:
\n
message = value.get(
\"
message
\"
, None)
\n
except ValueError:
\n
pass
\n
\n
exception_class: Type[WebDriverException]
\n
e = ErrorCode()
\n
error_codes = [item for item in dir(e) if not item.startswith(
\"
__
\"
)]
\n
for error_code in error_codes:
\n
error_info = getattr(ErrorCode, error_code)
\n
if isinstance(error_info, list) and status in error_info:
\n
exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
\n
break
\n
else:
\n
exception_class = WebDriverException
\n
\n
if not value:
\n
value = response[
\"
value
\"
]
\n
if isinstance(value, str):
\n
raise exception_class(value)
\n
if message ==
\"\"
and
\"
message
\"
in value:
\n
message = value[
\"
message
\"
]
\n
\n
screen = None # type: ignore[assignment]
\n
if
\"
screen
\"
in value:
\n
screen = value[
\"
screen
\"
]
\n
\n
stacktrace = None
\n
st_value = value.get(
\"
stackTrace
\"
) or value.get(
\"
stacktrace
\"
)
\n
if st_value:
\n
if isinstance(st_value, str):
\n
stacktrace = st_value.split(
\"\\
n
\"
)
\n
else:
\n
stacktrace = []
\n
try:
\n
for frame in st_value:
\n
line = frame.get(
\"
lineNumber
\"
,
\"\"
)
\n
file = frame.get(
\"
fileName
\"
,
\"
<anonymous>
\"
)
\n
if line:
\n
file = f
\"
{file}:{line}
\"\n
meth = frame.get(
\"
methodName
\"
,
\"
<anonymous>
\"
)
\n
if
\"
className
\"
in frame:
\n
meth = f
\"
{frame['className']}.{meth}
\"\n
msg =
\"
at %s (%s)
\"\n
msg = msg % (meth, file)
\n
stacktrace.append(msg)
\n
except TypeError:
\n
pass
\n
if exception_class == UnexpectedAlertPresentException:
\n
alert_text = None
\n
if
\"
data
\"
in value:
\n
alert_text = value[
\"
data
\"
].get(
\"
text
\"
)
\n
elif
\"
alert
\"
in value:
\n
alert_text = value[
\"
alert
\"
].get(
\"
text
\"
)
\n
raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here
\n
> raise exception_class(message, screen, stacktrace)
\n
E selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
E from unknown error: web view not found
\n
E (Session info: chrome=121.0.6167.185)
\n
E Stacktrace:
\n
E
\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n
E
\t
(No symbol) [0x00007FF796014C02]
\n
E
\t
(No symbol) [0x00007FF795EC5AEB]
\n
E
\t
(No symbol) [0x00007FF795EA288C]
\n
E
\t
(No symbol) [0x00007FF795F35DD7]
\n
E
\t
(No symbol) [0x00007FF795F4B40F]
\n
E
\t
(No symbol) [0x00007FF795F2EE53]
\n
E
\t
(No symbol) [0x00007FF795EFF514]
\n
E
\t
(No symbol) [0x00007FF795F00631]
\n
E
\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n
E
\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n
E
\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n
E
\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n
E
\t
(No symbol) [0x00007FF79602126F]
\n
E
\t
(No symbol) [0x00007FF79601C304]
\n
E
\t
(No symbol) [0x00007FF79601C432]
\n
E
\t
(No symbol) [0x00007FF79600BD04]
\n
E
\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n
E
\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]
\n\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
errorhandler.py:229: NoSuchWindowException"
,
"steps"
:[],
"attachments"
:[{
"uid"
:
"70b951d2d0019a8a"
,
"name"
:
"stderr"
,
"source"
:
"70b951d2d0019a8a.txt"
,
"type"
:
"text/plain"
,
"size"
:
146
}],
"parameters"
:[],
"attachmentStep"
:
false
,
"stepsCount"
:
0
,
"hasContent"
:
true
,
"shouldDisplayMessage"
:
true
,
"attachmentsCount"
:
1
},
"afterStages"
:[{
"name"
:
"_xunit_setup_method_fixture_TestLogin::0"
,
"time"
:{
"start"
:
1708599929985
,
"stop"
:
1708599929985
,
"duration"
:
0
},
"status"
:
"passed"
,
"steps"
:[],
"attachments"
:[],
"parameters"
:[],
"attachmentStep"
:
false
,
"stepsCount"
:
0
,
"hasContent"
:
false
,
"shouldDisplayMessage"
:
false
,
"attachmentsCount"
:
0
},{
"name"
:
"_xunit_setup_class_fixture_TestLogin::0"
,
"time"
:{
"start"
:
1708599930028
,
"stop"
:
1708599932088
,
"duration"
:
2060
},
"status"
:
"passed"
,
"steps"
:[],
"attachments"
:[],
"parameters"
:[],
"attachmentStep"
:
false
,
"stepsCount"
:
0
,
"hasContent"
:
false
,
"shouldDisplayMessage"
:
false
,
"attachmentsCount"
:
0
}],
"labels"
:[{
"name"
:
"tag"
,
"value"
:
"run(order=1)"
},{
"name"
:
"parentSuite"
,
"value"
:
"TestCases"
},{
"name"
:
"suite"
,
"value"
:
"test_login"
},{
"name"
:
"subSuite"
,
"value"
:
"TestLogin"
},{
"name"
:
"host"
,
"value"
:
"DCG027335"
},{
"name"
:
"thread"
,
"value"
:
"25188-MainThread"
},{
"name"
:
"framework"
,
"value"
:
"pytest"
},{
"name"
:
"language"
,
"value"
:
"cpython3"
},{
"name"
:
"package"
,
"value"
:
"TestCases.test_login"
},{
"name"
:
"resultFormat"
,
"value"
:
"allure2"
}],
"parameters"
:[],
"links"
:[],
"hidden"
:
false
,
"retry"
:
false
,
"extra"
:{
"severity"
:
"normal"
,
"retries"
:[],
"categories"
:[{
"name"
:
"Test defects"
,
"matchedStatuses"
:[],
"flaky"
:
false
}],
"tags"
:[
"run(order=1)"
]},
"source"
:
"60b6e3b6e95b5d0c.json"
,
"parameterValues"
:[]}
\ No newline at end of file
output/allure_report_html/data/test-cases/7e8d34515a9dd56c.json
0 → 100644
View file @
f1823f37
{
"uid"
:
"7e8d34515a9dd56c"
,
"name"
:
"test_login_invalid_username"
,
"fullName"
:
"TestCases.test_login.TestLogin#test_login_invalid_username"
,
"historyId"
:
"26544122cf70e22e96bace727415c5ce"
,
"time"
:{
"start"
:
1708599929987
,
"stop"
:
1708599929987
,
"duration"
:
0
},
"status"
:
"broken"
,
"statusMessage"
:
"selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
from unknown error: web view not found
\n
(Session info: chrome=121.0.6167.185)
\n
Stacktrace:
\n\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n\t
(No symbol) [0x00007FF796014C02]
\n\t
(No symbol) [0x00007FF795EC5AEB]
\n\t
(No symbol) [0x00007FF795EA288C]
\n\t
(No symbol) [0x00007FF795F35DD7]
\n\t
(No symbol) [0x00007FF795F4B40F]
\n\t
(No symbol) [0x00007FF795F2EE53]
\n\t
(No symbol) [0x00007FF795EFF514]
\n\t
(No symbol) [0x00007FF795F00631]
\n\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n\t
(No symbol) [0x00007FF79602126F]
\n\t
(No symbol) [0x00007FF79601C304]
\n\t
(No symbol) [0x00007FF79601C432]
\n\t
(No symbol) [0x00007FF79600BD04]
\n\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]"
,
"statusTrace"
:
"self = <test_login.TestLogin object at 0x0000020D03B3F5E0>
\n\n
def setup_method(self):
\n
# 在每个测试用例脚本之前执行一次
\n
> self.driver.get('https://rays7.raysgo.com/login')
\n\n
TestCases
\\
test_login.py:25:
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:356: in get
\n
self.execute(Command.GET, {
\"
url
\"
: url})
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:347: in execute
\n
self.error_handler.check_response(response)
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n\n
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x0000020D03B3F880>
\n
response = {'status': 404, 'value': '{
\"
value
\"
:{
\"
error
\"
:
\"
no such window
\"
,
\"
message
\"
:
\"
no such window: target window already closed
\\\\
...07FF79600BD04]
\\\\
n
\\\\
tBaseThreadInitThunk [0x00007FFF3E08257D+29]
\\\\
n
\\\\
tRtlUserThreadStart [0x00007FFF3F9CAA58+40]
\\\\
n
\"
}}'}
\n\n
def check_response(self, response: Dict[str, Any]) -> None:
\n
\"\"\"
Checks that a JSON response from the WebDriver does not have an
\n
error.
\n
\n
:Args:
\n
- response - The JSON response from the WebDriver server as a dictionary
\n
object.
\n
\n
:Raises: If the response contains an error message.
\n
\"\"\"\n
status = response.get(
\"
status
\"
, None)
\n
if not status or status == ErrorCode.SUCCESS:
\n
return
\n
value = None
\n
message = response.get(
\"
message
\"
,
\"\"
)
\n
screen: str = response.get(
\"
screen
\"
,
\"\"
)
\n
stacktrace = None
\n
if isinstance(status, int):
\n
value_json = response.get(
\"
value
\"
, None)
\n
if value_json and isinstance(value_json, str):
\n
import json
\n
\n
try:
\n
value = json.loads(value_json)
\n
if len(value) == 1:
\n
value = value[
\"
value
\"
]
\n
status = value.get(
\"
error
\"
, None)
\n
if not status:
\n
status = value.get(
\"
status
\"
, ErrorCode.UNKNOWN_ERROR)
\n
message = value.get(
\"
value
\"
) or value.get(
\"
message
\"
)
\n
if not isinstance(message, str):
\n
value = message
\n
message = message.get(
\"
message
\"
)
\n
else:
\n
message = value.get(
\"
message
\"
, None)
\n
except ValueError:
\n
pass
\n
\n
exception_class: Type[WebDriverException]
\n
e = ErrorCode()
\n
error_codes = [item for item in dir(e) if not item.startswith(
\"
__
\"
)]
\n
for error_code in error_codes:
\n
error_info = getattr(ErrorCode, error_code)
\n
if isinstance(error_info, list) and status in error_info:
\n
exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
\n
break
\n
else:
\n
exception_class = WebDriverException
\n
\n
if not value:
\n
value = response[
\"
value
\"
]
\n
if isinstance(value, str):
\n
raise exception_class(value)
\n
if message ==
\"\"
and
\"
message
\"
in value:
\n
message = value[
\"
message
\"
]
\n
\n
screen = None # type: ignore[assignment]
\n
if
\"
screen
\"
in value:
\n
screen = value[
\"
screen
\"
]
\n
\n
stacktrace = None
\n
st_value = value.get(
\"
stackTrace
\"
) or value.get(
\"
stacktrace
\"
)
\n
if st_value:
\n
if isinstance(st_value, str):
\n
stacktrace = st_value.split(
\"\\
n
\"
)
\n
else:
\n
stacktrace = []
\n
try:
\n
for frame in st_value:
\n
line = frame.get(
\"
lineNumber
\"
,
\"\"
)
\n
file = frame.get(
\"
fileName
\"
,
\"
<anonymous>
\"
)
\n
if line:
\n
file = f
\"
{file}:{line}
\"\n
meth = frame.get(
\"
methodName
\"
,
\"
<anonymous>
\"
)
\n
if
\"
className
\"
in frame:
\n
meth = f
\"
{frame['className']}.{meth}
\"\n
msg =
\"
at %s (%s)
\"\n
msg = msg % (meth, file)
\n
stacktrace.append(msg)
\n
except TypeError:
\n
pass
\n
if exception_class == UnexpectedAlertPresentException:
\n
alert_text = None
\n
if
\"
data
\"
in value:
\n
alert_text = value[
\"
data
\"
].get(
\"
text
\"
)
\n
elif
\"
alert
\"
in value:
\n
alert_text = value[
\"
alert
\"
].get(
\"
text
\"
)
\n
raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here
\n
> raise exception_class(message, screen, stacktrace)
\n
E selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
E from unknown error: web view not found
\n
E (Session info: chrome=121.0.6167.185)
\n
E Stacktrace:
\n
E
\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n
E
\t
(No symbol) [0x00007FF796014C02]
\n
E
\t
(No symbol) [0x00007FF795EC5AEB]
\n
E
\t
(No symbol) [0x00007FF795EA288C]
\n
E
\t
(No symbol) [0x00007FF795F35DD7]
\n
E
\t
(No symbol) [0x00007FF795F4B40F]
\n
E
\t
(No symbol) [0x00007FF795F2EE53]
\n
E
\t
(No symbol) [0x00007FF795EFF514]
\n
E
\t
(No symbol) [0x00007FF795F00631]
\n
E
\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n
E
\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n
E
\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n
E
\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n
E
\t
(No symbol) [0x00007FF79602126F]
\n
E
\t
(No symbol) [0x00007FF79601C304]
\n
E
\t
(No symbol) [0x00007FF79601C432]
\n
E
\t
(No symbol) [0x00007FF79600BD04]
\n
E
\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n
E
\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]
\n\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
errorhandler.py:229: NoSuchWindowException"
,
"flaky"
:
false
,
"newFailed"
:
false
,
"newBroken"
:
false
,
"newPassed"
:
false
,
"retriesCount"
:
0
,
"retriesStatusChange"
:
false
,
"beforeStages"
:[{
"name"
:
"_xunit_setup_class_fixture_TestLogin"
,
"time"
:{
"start"
:
1708599911817
,
"stop"
:
1708599913397
,
"duration"
:
1580
},
"status"
:
"passed"
,
"steps"
:[],
"attachments"
:[],
"parameters"
:[],
"attachmentStep"
:
false
,
"stepsCount"
:
0
,
"hasContent"
:
false
,
"shouldDisplayMessage"
:
false
,
"attachmentsCount"
:
0
},{
"name"
:
"_xunit_setup_method_fixture_TestLogin"
,
"time"
:{
"start"
:
1708599929988
,
"stop"
:
1708599929988
,
"duration"
:
0
},
"status"
:
"broken"
,
"statusMessage"
:
"selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
from unknown error: web view not found
\n
(Session info: chrome=121.0.6167.185)
\n
Stacktrace:
\n\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n\t
(No symbol) [0x00007FF796014C02]
\n\t
(No symbol) [0x00007FF795EC5AEB]
\n\t
(No symbol) [0x00007FF795EA288C]
\n\t
(No symbol) [0x00007FF795F35DD7]
\n\t
(No symbol) [0x00007FF795F4B40F]
\n\t
(No symbol) [0x00007FF795F2EE53]
\n\t
(No symbol) [0x00007FF795EFF514]
\n\t
(No symbol) [0x00007FF795F00631]
\n\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n\t
(No symbol) [0x00007FF79602126F]
\n\t
(No symbol) [0x00007FF79601C304]
\n\t
(No symbol) [0x00007FF79601C432]
\n\t
(No symbol) [0x00007FF79600BD04]
\n\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]
\n\n
"
,
"statusTrace"
:
" File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
pluggy
\\
_callers.py
\"
, line 166, in _multicall
\n
teardown.throw(outcome._exception)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
setuponly.py
\"
, line 36, in pytest_fixture_setup
\n
return (yield)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
pluggy
\\
_callers.py
\"
, line 102, in _multicall
\n
res = hook_impl.function(*args)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
fixtures.py
\"
, line 1149, in pytest_fixture_setup
\n
result = call_fixture_func(fixturefunc, request, kwargs)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
fixtures.py
\"
, line 916, in call_fixture_func
\n
fixture_result = next(generator)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
python.py
\"
, line 885, in xunit_setup_method_fixture
\n
_call_with_optional_argument(func, method)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
python.py
\"
, line 765, in _call_with_optional_argument
\n
func()
\n
File
\"
D:
\\
UIProject
\\
TestCases
\\
test_login.py
\"
, line 25, in setup_method
\n
self.driver.get('https://rays7.raysgo.com/login')
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py
\"
, line 356, in get
\n
self.execute(Command.GET, {
\"
url
\"
: url})
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py
\"
, line 347, in execute
\n
self.error_handler.check_response(response)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
errorhandler.py
\"
, line 229, in check_response
\n
raise exception_class(message, screen, stacktrace)
\n
"
,
"steps"
:[],
"attachments"
:[],
"parameters"
:[],
"attachmentStep"
:
false
,
"stepsCount"
:
0
,
"hasContent"
:
true
,
"shouldDisplayMessage"
:
true
,
"attachmentsCount"
:
0
}],
"afterStages"
:[{
"name"
:
"_xunit_setup_class_fixture_TestLogin::0"
,
"time"
:{
"start"
:
1708599930028
,
"stop"
:
1708599932088
,
"duration"
:
2060
},
"status"
:
"passed"
,
"steps"
:[],
"attachments"
:[],
"parameters"
:[],
"attachmentStep"
:
false
,
"stepsCount"
:
0
,
"hasContent"
:
false
,
"shouldDisplayMessage"
:
false
,
"attachmentsCount"
:
0
}],
"labels"
:[{
"name"
:
"parentSuite"
,
"value"
:
"TestCases"
},{
"name"
:
"suite"
,
"value"
:
"test_login"
},{
"name"
:
"subSuite"
,
"value"
:
"TestLogin"
},{
"name"
:
"host"
,
"value"
:
"DCG027335"
},{
"name"
:
"thread"
,
"value"
:
"25188-MainThread"
},{
"name"
:
"framework"
,
"value"
:
"pytest"
},{
"name"
:
"language"
,
"value"
:
"cpython3"
},{
"name"
:
"package"
,
"value"
:
"TestCases.test_login"
},{
"name"
:
"resultFormat"
,
"value"
:
"allure2"
}],
"parameters"
:[],
"links"
:[],
"hidden"
:
false
,
"retry"
:
false
,
"extra"
:{
"severity"
:
"normal"
,
"retries"
:[],
"categories"
:[{
"name"
:
"Test defects"
,
"matchedStatuses"
:[],
"flaky"
:
false
}],
"tags"
:[]},
"source"
:
"7e8d34515a9dd56c.json"
,
"parameterValues"
:[]}
\ No newline at end of file
output/allure_report_html/data/test-cases/8f4c29984e1d0a6c.json
0 → 100644
View file @
f1823f37
{
"uid"
:
"8f4c29984e1d0a6c"
,
"name"
:
"test_login_invalid_password"
,
"fullName"
:
"TestCases.test_login.TestLogin#test_login_invalid_password"
,
"historyId"
:
"bf01a7f441fea677280889d0ba346cc6"
,
"time"
:{
"start"
:
1708599930011
,
"stop"
:
1708599930011
,
"duration"
:
0
},
"status"
:
"broken"
,
"statusMessage"
:
"selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
from unknown error: web view not found
\n
(Session info: chrome=121.0.6167.185)
\n
Stacktrace:
\n\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n\t
(No symbol) [0x00007FF796014C02]
\n\t
(No symbol) [0x00007FF795EC5AEB]
\n\t
(No symbol) [0x00007FF795EA288C]
\n\t
(No symbol) [0x00007FF795F35DD7]
\n\t
(No symbol) [0x00007FF795F4B40F]
\n\t
(No symbol) [0x00007FF795F2EE53]
\n\t
(No symbol) [0x00007FF795EFF514]
\n\t
(No symbol) [0x00007FF795F00631]
\n\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n\t
(No symbol) [0x00007FF79602126F]
\n\t
(No symbol) [0x00007FF79601C304]
\n\t
(No symbol) [0x00007FF79601C432]
\n\t
(No symbol) [0x00007FF79600BD04]
\n\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]"
,
"statusTrace"
:
"self = <test_login.TestLogin object at 0x0000020D03B3F7C0>
\n\n
def setup_method(self):
\n
# 在每个测试用例脚本之前执行一次
\n
> self.driver.get('https://rays7.raysgo.com/login')
\n\n
TestCases
\\
test_login.py:25:
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:356: in get
\n
self.execute(Command.GET, {
\"
url
\"
: url})
\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py:347: in execute
\n
self.error_handler.check_response(response)
\n
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
\n\n
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x0000020D03B3F880>
\n
response = {'status': 404, 'value': '{
\"
value
\"
:{
\"
error
\"
:
\"
no such window
\"
,
\"
message
\"
:
\"
no such window: target window already closed
\\\\
...07FF79600BD04]
\\\\
n
\\\\
tBaseThreadInitThunk [0x00007FFF3E08257D+29]
\\\\
n
\\\\
tRtlUserThreadStart [0x00007FFF3F9CAA58+40]
\\\\
n
\"
}}'}
\n\n
def check_response(self, response: Dict[str, Any]) -> None:
\n
\"\"\"
Checks that a JSON response from the WebDriver does not have an
\n
error.
\n
\n
:Args:
\n
- response - The JSON response from the WebDriver server as a dictionary
\n
object.
\n
\n
:Raises: If the response contains an error message.
\n
\"\"\"\n
status = response.get(
\"
status
\"
, None)
\n
if not status or status == ErrorCode.SUCCESS:
\n
return
\n
value = None
\n
message = response.get(
\"
message
\"
,
\"\"
)
\n
screen: str = response.get(
\"
screen
\"
,
\"\"
)
\n
stacktrace = None
\n
if isinstance(status, int):
\n
value_json = response.get(
\"
value
\"
, None)
\n
if value_json and isinstance(value_json, str):
\n
import json
\n
\n
try:
\n
value = json.loads(value_json)
\n
if len(value) == 1:
\n
value = value[
\"
value
\"
]
\n
status = value.get(
\"
error
\"
, None)
\n
if not status:
\n
status = value.get(
\"
status
\"
, ErrorCode.UNKNOWN_ERROR)
\n
message = value.get(
\"
value
\"
) or value.get(
\"
message
\"
)
\n
if not isinstance(message, str):
\n
value = message
\n
message = message.get(
\"
message
\"
)
\n
else:
\n
message = value.get(
\"
message
\"
, None)
\n
except ValueError:
\n
pass
\n
\n
exception_class: Type[WebDriverException]
\n
e = ErrorCode()
\n
error_codes = [item for item in dir(e) if not item.startswith(
\"
__
\"
)]
\n
for error_code in error_codes:
\n
error_info = getattr(ErrorCode, error_code)
\n
if isinstance(error_info, list) and status in error_info:
\n
exception_class = getattr(ExceptionMapping, error_code, WebDriverException)
\n
break
\n
else:
\n
exception_class = WebDriverException
\n
\n
if not value:
\n
value = response[
\"
value
\"
]
\n
if isinstance(value, str):
\n
raise exception_class(value)
\n
if message ==
\"\"
and
\"
message
\"
in value:
\n
message = value[
\"
message
\"
]
\n
\n
screen = None # type: ignore[assignment]
\n
if
\"
screen
\"
in value:
\n
screen = value[
\"
screen
\"
]
\n
\n
stacktrace = None
\n
st_value = value.get(
\"
stackTrace
\"
) or value.get(
\"
stacktrace
\"
)
\n
if st_value:
\n
if isinstance(st_value, str):
\n
stacktrace = st_value.split(
\"\\
n
\"
)
\n
else:
\n
stacktrace = []
\n
try:
\n
for frame in st_value:
\n
line = frame.get(
\"
lineNumber
\"
,
\"\"
)
\n
file = frame.get(
\"
fileName
\"
,
\"
<anonymous>
\"
)
\n
if line:
\n
file = f
\"
{file}:{line}
\"\n
meth = frame.get(
\"
methodName
\"
,
\"
<anonymous>
\"
)
\n
if
\"
className
\"
in frame:
\n
meth = f
\"
{frame['className']}.{meth}
\"\n
msg =
\"
at %s (%s)
\"\n
msg = msg % (meth, file)
\n
stacktrace.append(msg)
\n
except TypeError:
\n
pass
\n
if exception_class == UnexpectedAlertPresentException:
\n
alert_text = None
\n
if
\"
data
\"
in value:
\n
alert_text = value[
\"
data
\"
].get(
\"
text
\"
)
\n
elif
\"
alert
\"
in value:
\n
alert_text = value[
\"
alert
\"
].get(
\"
text
\"
)
\n
raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here
\n
> raise exception_class(message, screen, stacktrace)
\n
E selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
E from unknown error: web view not found
\n
E (Session info: chrome=121.0.6167.185)
\n
E Stacktrace:
\n
E
\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n
E
\t
(No symbol) [0x00007FF796014C02]
\n
E
\t
(No symbol) [0x00007FF795EC5AEB]
\n
E
\t
(No symbol) [0x00007FF795EA288C]
\n
E
\t
(No symbol) [0x00007FF795F35DD7]
\n
E
\t
(No symbol) [0x00007FF795F4B40F]
\n
E
\t
(No symbol) [0x00007FF795F2EE53]
\n
E
\t
(No symbol) [0x00007FF795EFF514]
\n
E
\t
(No symbol) [0x00007FF795F00631]
\n
E
\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n
E
\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n
E
\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n
E
\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n
E
\t
(No symbol) [0x00007FF79602126F]
\n
E
\t
(No symbol) [0x00007FF79601C304]
\n
E
\t
(No symbol) [0x00007FF79601C432]
\n
E
\t
(No symbol) [0x00007FF79600BD04]
\n
E
\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n
E
\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]
\n\n
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
errorhandler.py:229: NoSuchWindowException"
,
"flaky"
:
false
,
"newFailed"
:
false
,
"newBroken"
:
false
,
"newPassed"
:
false
,
"retriesCount"
:
0
,
"retriesStatusChange"
:
false
,
"beforeStages"
:[{
"name"
:
"_xunit_setup_class_fixture_TestLogin"
,
"time"
:{
"start"
:
1708599911817
,
"stop"
:
1708599913397
,
"duration"
:
1580
},
"status"
:
"passed"
,
"steps"
:[],
"attachments"
:[],
"parameters"
:[],
"attachmentStep"
:
false
,
"stepsCount"
:
0
,
"hasContent"
:
false
,
"shouldDisplayMessage"
:
false
,
"attachmentsCount"
:
0
},{
"name"
:
"_xunit_setup_method_fixture_TestLogin"
,
"time"
:{
"start"
:
1708599930011
,
"stop"
:
1708599930012
,
"duration"
:
1
},
"status"
:
"broken"
,
"statusMessage"
:
"selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
\n
from unknown error: web view not found
\n
(Session info: chrome=121.0.6167.185)
\n
Stacktrace:
\n\t
GetHandleVerifier [0x00007FF7963F5E42+3538674]
\n\t
(No symbol) [0x00007FF796014C02]
\n\t
(No symbol) [0x00007FF795EC5AEB]
\n\t
(No symbol) [0x00007FF795EA288C]
\n\t
(No symbol) [0x00007FF795F35DD7]
\n\t
(No symbol) [0x00007FF795F4B40F]
\n\t
(No symbol) [0x00007FF795F2EE53]
\n\t
(No symbol) [0x00007FF795EFF514]
\n\t
(No symbol) [0x00007FF795F00631]
\n\t
GetHandleVerifier [0x00007FF796426CAD+3738973]
\n\t
GetHandleVerifier [0x00007FF79647C506+4089270]
\n\t
GetHandleVerifier [0x00007FF796474823+4057299]
\n\t
GetHandleVerifier [0x00007FF796145C49+720121]
\n\t
(No symbol) [0x00007FF79602126F]
\n\t
(No symbol) [0x00007FF79601C304]
\n\t
(No symbol) [0x00007FF79601C432]
\n\t
(No symbol) [0x00007FF79600BD04]
\n\t
BaseThreadInitThunk [0x00007FFF3E08257D+29]
\n\t
RtlUserThreadStart [0x00007FFF3F9CAA58+40]
\n\n
"
,
"statusTrace"
:
" File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
pluggy
\\
_callers.py
\"
, line 166, in _multicall
\n
teardown.throw(outcome._exception)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
setuponly.py
\"
, line 36, in pytest_fixture_setup
\n
return (yield)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
pluggy
\\
_callers.py
\"
, line 102, in _multicall
\n
res = hook_impl.function(*args)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
fixtures.py
\"
, line 1149, in pytest_fixture_setup
\n
result = call_fixture_func(fixturefunc, request, kwargs)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
fixtures.py
\"
, line 916, in call_fixture_func
\n
fixture_result = next(generator)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
python.py
\"
, line 885, in xunit_setup_method_fixture
\n
_call_with_optional_argument(func, method)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
_pytest
\\
python.py
\"
, line 765, in _call_with_optional_argument
\n
func()
\n
File
\"
D:
\\
UIProject
\\
TestCases
\\
test_login.py
\"
, line 25, in setup_method
\n
self.driver.get('https://rays7.raysgo.com/login')
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py
\"
, line 356, in get
\n
self.execute(Command.GET, {
\"
url
\"
: url})
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
webdriver.py
\"
, line 347, in execute
\n
self.error_handler.check_response(response)
\n
File
\"
D:
\\
UIProject
\\
venv
\\
lib
\\
site-packages
\\
selenium
\\
webdriver
\\
remote
\\
errorhandler.py
\"
, line 229, in check_response
\n
raise exception_class(message, screen, stacktrace)
\n
"
,
"steps"
:[],
"attachments"
:[],
"parameters"
:[],
"attachmentStep"
:
false
,
"stepsCount"
:
0
,
"hasContent"
:
true
,
"shouldDisplayMessage"
:
true
,
"attachmentsCount"
:
0
}],
"afterStages"
:[{
"name"
:
"_xunit_setup_class_fixture_TestLogin::0"
,
"time"
:{
"start"
:
1708599930028
,
"stop"
:
1708599932088
,
"duration"
:
2060
},
"status"
:
"passed"
,
"steps"
:[],
"attachments"
:[],
"parameters"
:[],
"attachmentStep"
:
false
,
"stepsCount"
:
0
,
"hasContent"
:
false
,
"shouldDisplayMessage"
:
false
,
"attachmentsCount"
:
0
}],
"labels"
:[{
"name"
:
"parentSuite"
,
"value"
:
"TestCases"
},{
"name"
:
"suite"
,
"value"
:
"test_login"
},{
"name"
:
"subSuite"
,
"value"
:
"TestLogin"
},{
"name"
:
"host"
,
"value"
:
"DCG027335"
},{
"name"
:
"thread"
,
"value"
:
"25188-MainThread"
},{
"name"
:
"framework"
,
"value"
:
"pytest"
},{
"name"
:
"language"
,
"value"
:
"cpython3"
},{
"name"
:
"package"
,
"value"
:
"TestCases.test_login"
},{
"name"
:
"resultFormat"
,
"value"
:
"allure2"
}],
"parameters"
:[],
"links"
:[],
"hidden"
:
false
,
"retry"
:
false
,
"extra"
:{
"severity"
:
"normal"
,
"retries"
:[],
"categories"
:[{
"name"
:
"Test defects"
,
"matchedStatuses"
:[],
"flaky"
:
false
}],
"tags"
:[]},
"source"
:
"8f4c29984e1d0a6c.json"
,
"parameterValues"
:[]}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment