PS C:\Users\Administrator\Desktop\web8> & D:/Python/python.exe c:/Users/Administrator/Desktop/web8/CMG_024_test.py
CMG_024_test.py::Test_CMG024::test_add_qvlan
------------------------------------------------------------------------------------ live log setup -------------------------------------------------------------------------------------
17:20:16 - MyBaseTest - INFO - url:::http://192.168.11.110:5066/api/TestReport/create-report
17:20:16 - MyBaseTest - INFO - Report Create successfully. Report ID: 317
17:20:18 - MyBaseTest - INFO - Base Proxy address:localhost:8081
DevTools listening on ws://127.0.0.1:58322/devtools/browser/265bb708-e8e6-4d4b-9376-b87f130d5136
[26244:19408:0809/172019.494:ERROR:sandbox_win.cc(840)] Sandbox cannot access executable. Check filesystem permissions are valid. See https://bit.ly/31yqMJR.: 鎷掔粷璁块棶銆?(0x5)
[26244:22000:0809/172019.591:ERROR:network_service_instance_impl.cc(600)] Network service crashed, restarting service.
17:20:34 - MyBaseTest - ERROR - Sign in Error
ERROR [ 33%]
CMG_024_test.py::Test_CMG024::test_add_qvlan_port[1234] ERROR [ 66%]
CMG_024_test.py::Test_CMG024::test_qvlan_boundary ERROR [100%]
======================================================================================== ERRORS =========================================================================================
_____________________________________________________________________ ERROR at setup of Test_CMG024.test_add_qvlan ______________________________________________________________________
self = <MyBaseTest.BaseTest object at 0x000002680CCA0AD0>
def sign_in(self):
"""执行登录操作(中文版)"""
try:
self.driver.get(self.dev_ip)
time.sleep(3.5)
> WebDriverWait(self.driver, 5).until(
EC.visibility_of_element_located((By.ID, "password"))
)
MyBaseTest.py:303:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
D:\Python\Lib\site-packages\selenium\webdriver\support\wait.py:129: in until
value = method(self._driver)
^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\support\expected_conditions.py:217: in _predicate
return _element_if_visible(driver.find_element(*locator))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:922: in find_element
return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:454: in execute
self.error_handler.check_response(response)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x000002680CCA12B0>
response = {'status': 404, 'value': '{"value":{"error":"no such window","message":"no such window: target window already closed\\...07FF74CAEA3EF]\\n\\tBaseThreadInitThunk [0x00007FFAFC6FE8D7+23]\\n\\tRtlUserThreadStart [0x00007FFAFD7BC34C+44]\\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):
try:
value = json.loads(value_json)
if isinstance(value, dict):
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", "<anonymous>")
if line:
file = f"{file}:{line}"
meth = frame.get("methodName", "<anonymous>")
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
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
E from unknown error: web view not found
E (Session info: chrome=127.0.6533.99)
E Stacktrace:
E GetHandleVerifier [0x00007FF74CB39632+30946]
E (No symbol) [0x00007FF74CAEE3C9]
E (No symbol) [0x00007FF74C9E6FDA]
E (No symbol) [0x00007FF74C9BCB85]
E (No symbol) [0x00007FF74CA637A7]
E (No symbol) [0x00007FF74CA7A771]
E (No symbol) [0x00007FF74CA5C813]
E (No symbol) [0x00007FF74CA2A6E5]
E (No symbol) [0x00007FF74CA2B021]
E GetHandleVerifier [0x00007FF74CC6F83D+1301229]
E GetHandleVerifier [0x00007FF74CC7BDB7+1351783]
E GetHandleVerifier [0x00007FF74CC72A03+1313971]
E GetHandleVerifier [0x00007FF74CB6DD06+245686]
E (No symbol) [0x00007FF74CAF758F]
E (No symbol) [0x00007FF74CAF3804]
E (No symbol) [0x00007FF74CAF3992]
E (No symbol) [0x00007FF74CAEA3EF]
E BaseThreadInitThunk [0x00007FFAFC6FE8D7+23]
E RtlUserThreadStart [0x00007FFAFD7BC34C+44]
D:\Python\Lib\site-packages\selenium\webdriver\remote\errorhandler.py:232: NoSuchWindowException
During handling of the above exception, another exception occurred:
request = <SubRequest 'get_driver' for <Function test_add_qvlan>>, setup_browsermob_proxy = <MyBaseTest.BaseTest object at 0x000002680CCA0AD0>
@pytest.fixture(scope="class")
def get_driver(request,setup_browsermob_proxy):
# 自动登陆实现
setup_browsermob_proxy.load_config()
> setup_browsermob_proxy.sign_in()
conftest.py:112:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
MyBaseTest.py:336: in sign_in
self.take_screenshot("Sign_Error")
MyBaseTest.py:250: in take_screenshot
self.driver.save_screenshot(screenshot_path)
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:1021: in save_screenshot
return self.get_screenshot_as_file(filename)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:996: in get_screenshot_as_file
png = self.get_screenshot_as_png()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:1030: in get_screenshot_as_png
return b64decode(self.get_screenshot_as_base64().encode("ascii"))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:1040: in get_screenshot_as_base64
return self.execute(Command.SCREENSHOT)["value"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:454: in execute
self.error_handler.check_response(response)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x000002680CCA12B0>
response = {'status': 404, 'value': '{"value":{"error":"no such window","message":"no such window: target window already closed\\...07FF74CAEA3EF]\\n\\tBaseThreadInitThunk [0x00007FFAFC6FE8D7+23]\\n\\tRtlUserThreadStart [0x00007FFAFD7BC34C+44]\\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):
try:
value = json.loads(value_json)
if isinstance(value, dict):
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", "<anonymous>")
if line:
file = f"{file}:{line}"
meth = frame.get("methodName", "<anonymous>")
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
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
E from unknown error: web view not found
E (Session info: chrome=127.0.6533.99)
E Stacktrace:
E GetHandleVerifier [0x00007FF74CB39632+30946]
E (No symbol) [0x00007FF74CAEE3C9]
E (No symbol) [0x00007FF74C9E6FDA]
E (No symbol) [0x00007FF74C9BCB85]
E (No symbol) [0x00007FF74CA637A7]
E (No symbol) [0x00007FF74CA7A771]
E (No symbol) [0x00007FF74CA5C813]
E (No symbol) [0x00007FF74CA2A6E5]
E (No symbol) [0x00007FF74CA2B021]
E GetHandleVerifier [0x00007FF74CC6F83D+1301229]
E GetHandleVerifier [0x00007FF74CC7BDB7+1351783]
E GetHandleVerifier [0x00007FF74CC72A03+1313971]
E GetHandleVerifier [0x00007FF74CB6DD06+245686]
E (No symbol) [0x00007FF74CAF758F]
E (No symbol) [0x00007FF74CAF3804]
E (No symbol) [0x00007FF74CAF3992]
E (No symbol) [0x00007FF74CAEA3EF]
E BaseThreadInitThunk [0x00007FFAFC6FE8D7+23]
E RtlUserThreadStart [0x00007FFAFD7BC34C+44]
D:\Python\Lib\site-packages\selenium\webdriver\remote\errorhandler.py:232: NoSuchWindowException
---------------------------------------------------------------------------------- Captured log setup -----------------------------------------------------------------------------------
INFO MyBaseTest:MyBaseTest.py:758 url:::http://192.168.11.110:5066/api/TestReport/create-report
INFO MyBaseTest:MyBaseTest.py:773 Report Create successfully. Report ID: 317
INFO MyBaseTest:MyBaseTest.py:62 Base Proxy address:localhost:8081
ERROR MyBaseTest:MyBaseTest.py:335 Sign in Error
________________________________________________________________ ERROR at setup of Test_CMG024.test_add_qvlan_port[1234] ________________________________________________________________
self = <MyBaseTest.BaseTest object at 0x000002680CCA0AD0>
def sign_in(self):
"""执行登录操作(中文版)"""
try:
self.driver.get(self.dev_ip)
time.sleep(3.5)
> WebDriverWait(self.driver, 5).until(
EC.visibility_of_element_located((By.ID, "password"))
)
MyBaseTest.py:303:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
D:\Python\Lib\site-packages\selenium\webdriver\support\wait.py:129: in until
value = method(self._driver)
^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\support\expected_conditions.py:217: in _predicate
return _element_if_visible(driver.find_element(*locator))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:922: in find_element
return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:454: in execute
self.error_handler.check_response(response)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x000002680CCA12B0>
response = {'status': 404, 'value': '{"value":{"error":"no such window","message":"no such window: target window already closed\\...07FF74CAEA3EF]\\n\\tBaseThreadInitThunk [0x00007FFAFC6FE8D7+23]\\n\\tRtlUserThreadStart [0x00007FFAFD7BC34C+44]\\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):
try:
value = json.loads(value_json)
if isinstance(value, dict):
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", "<anonymous>")
if line:
file = f"{file}:{line}"
meth = frame.get("methodName", "<anonymous>")
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
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
E from unknown error: web view not found
E (Session info: chrome=127.0.6533.99)
E Stacktrace:
E GetHandleVerifier [0x00007FF74CB39632+30946]
E (No symbol) [0x00007FF74CAEE3C9]
E (No symbol) [0x00007FF74C9E6FDA]
E (No symbol) [0x00007FF74C9BCB85]
E (No symbol) [0x00007FF74CA637A7]
E (No symbol) [0x00007FF74CA7A771]
E (No symbol) [0x00007FF74CA5C813]
E (No symbol) [0x00007FF74CA2A6E5]
E (No symbol) [0x00007FF74CA2B021]
E GetHandleVerifier [0x00007FF74CC6F83D+1301229]
E GetHandleVerifier [0x00007FF74CC7BDB7+1351783]
E GetHandleVerifier [0x00007FF74CC72A03+1313971]
E GetHandleVerifier [0x00007FF74CB6DD06+245686]
E (No symbol) [0x00007FF74CAF758F]
E (No symbol) [0x00007FF74CAF3804]
E (No symbol) [0x00007FF74CAF3992]
E (No symbol) [0x00007FF74CAEA3EF]
E BaseThreadInitThunk [0x00007FFAFC6FE8D7+23]
E RtlUserThreadStart [0x00007FFAFD7BC34C+44]
D:\Python\Lib\site-packages\selenium\webdriver\remote\errorhandler.py:232: NoSuchWindowException
During handling of the above exception, another exception occurred:
request = <SubRequest 'get_driver' for <Function test_add_qvlan>>, setup_browsermob_proxy = <MyBaseTest.BaseTest object at 0x000002680CCA0AD0>
@pytest.fixture(scope="class")
def get_driver(request,setup_browsermob_proxy):
# 自动登陆实现
setup_browsermob_proxy.load_config()
> setup_browsermob_proxy.sign_in()
conftest.py:112:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
MyBaseTest.py:336: in sign_in
self.take_screenshot("Sign_Error")
MyBaseTest.py:250: in take_screenshot
self.driver.save_screenshot(screenshot_path)
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:1021: in save_screenshot
return self.get_screenshot_as_file(filename)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:996: in get_screenshot_as_file
png = self.get_screenshot_as_png()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:1030: in get_screenshot_as_png
return b64decode(self.get_screenshot_as_base64().encode("ascii"))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:1040: in get_screenshot_as_base64
return self.execute(Command.SCREENSHOT)["value"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:454: in execute
self.error_handler.check_response(response)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x000002680CCA12B0>
response = {'status': 404, 'value': '{"value":{"error":"no such window","message":"no such window: target window already closed\\...07FF74CAEA3EF]\\n\\tBaseThreadInitThunk [0x00007FFAFC6FE8D7+23]\\n\\tRtlUserThreadStart [0x00007FFAFD7BC34C+44]\\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):
try:
value = json.loads(value_json)
if isinstance(value, dict):
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", "<anonymous>")
if line:
file = f"{file}:{line}"
meth = frame.get("methodName", "<anonymous>")
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
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
E from unknown error: web view not found
E (Session info: chrome=127.0.6533.99)
E Stacktrace:
E GetHandleVerifier [0x00007FF74CB39632+30946]
E (No symbol) [0x00007FF74CAEE3C9]
E (No symbol) [0x00007FF74C9E6FDA]
E (No symbol) [0x00007FF74C9BCB85]
E (No symbol) [0x00007FF74CA637A7]
E (No symbol) [0x00007FF74CA7A771]
E (No symbol) [0x00007FF74CA5C813]
E (No symbol) [0x00007FF74CA2A6E5]
E (No symbol) [0x00007FF74CA2B021]
E GetHandleVerifier [0x00007FF74CC6F83D+1301229]
E GetHandleVerifier [0x00007FF74CC7BDB7+1351783]
E GetHandleVerifier [0x00007FF74CC72A03+1313971]
E GetHandleVerifier [0x00007FF74CB6DD06+245686]
E (No symbol) [0x00007FF74CAF758F]
E (No symbol) [0x00007FF74CAF3804]
E (No symbol) [0x00007FF74CAF3992]
E (No symbol) [0x00007FF74CAEA3EF]
E BaseThreadInitThunk [0x00007FFAFC6FE8D7+23]
E RtlUserThreadStart [0x00007FFAFD7BC34C+44]
D:\Python\Lib\site-packages\selenium\webdriver\remote\errorhandler.py:232: NoSuchWindowException
___________________________________________________________________ ERROR at setup of Test_CMG024.test_qvlan_boundary ___________________________________________________________________
self = <MyBaseTest.BaseTest object at 0x000002680CCA0AD0>
def sign_in(self):
"""执行登录操作(中文版)"""
try:
self.driver.get(self.dev_ip)
time.sleep(3.5)
> WebDriverWait(self.driver, 5).until(
EC.visibility_of_element_located((By.ID, "password"))
)
MyBaseTest.py:303:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
D:\Python\Lib\site-packages\selenium\webdriver\support\wait.py:129: in until
value = method(self._driver)
^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\support\expected_conditions.py:217: in _predicate
return _element_if_visible(driver.find_element(*locator))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:922: in find_element
return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:454: in execute
self.error_handler.check_response(response)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x000002680CCA12B0>
response = {'status': 404, 'value': '{"value":{"error":"no such window","message":"no such window: target window already closed\\...07FF74CAEA3EF]\\n\\tBaseThreadInitThunk [0x00007FFAFC6FE8D7+23]\\n\\tRtlUserThreadStart [0x00007FFAFD7BC34C+44]\\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):
try:
value = json.loads(value_json)
if isinstance(value, dict):
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", "<anonymous>")
if line:
file = f"{file}:{line}"
meth = frame.get("methodName", "<anonymous>")
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
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
E from unknown error: web view not found
E (Session info: chrome=127.0.6533.99)
E Stacktrace:
E GetHandleVerifier [0x00007FF74CB39632+30946]
E (No symbol) [0x00007FF74CAEE3C9]
E (No symbol) [0x00007FF74C9E6FDA]
E (No symbol) [0x00007FF74C9BCB85]
E (No symbol) [0x00007FF74CA637A7]
E (No symbol) [0x00007FF74CA7A771]
E (No symbol) [0x00007FF74CA5C813]
E (No symbol) [0x00007FF74CA2A6E5]
E (No symbol) [0x00007FF74CA2B021]
E GetHandleVerifier [0x00007FF74CC6F83D+1301229]
E GetHandleVerifier [0x00007FF74CC7BDB7+1351783]
E GetHandleVerifier [0x00007FF74CC72A03+1313971]
E GetHandleVerifier [0x00007FF74CB6DD06+245686]
E (No symbol) [0x00007FF74CAF758F]
E (No symbol) [0x00007FF74CAF3804]
E (No symbol) [0x00007FF74CAF3992]
E (No symbol) [0x00007FF74CAEA3EF]
E BaseThreadInitThunk [0x00007FFAFC6FE8D7+23]
E RtlUserThreadStart [0x00007FFAFD7BC34C+44]
D:\Python\Lib\site-packages\selenium\webdriver\remote\errorhandler.py:232: NoSuchWindowException
During handling of the above exception, another exception occurred:
request = <SubRequest 'get_driver' for <Function test_add_qvlan>>, setup_browsermob_proxy = <MyBaseTest.BaseTest object at 0x000002680CCA0AD0>
@pytest.fixture(scope="class")
def get_driver(request,setup_browsermob_proxy):
# 自动登陆实现
setup_browsermob_proxy.load_config()
> setup_browsermob_proxy.sign_in()
conftest.py:112:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
MyBaseTest.py:336: in sign_in
self.take_screenshot("Sign_Error")
MyBaseTest.py:250: in take_screenshot
self.driver.save_screenshot(screenshot_path)
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:1021: in save_screenshot
return self.get_screenshot_as_file(filename)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:996: in get_screenshot_as_file
png = self.get_screenshot_as_png()
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:1030: in get_screenshot_as_png
return b64decode(self.get_screenshot_as_base64().encode("ascii"))
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:1040: in get_screenshot_as_base64
return self.execute(Command.SCREENSHOT)["value"]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
D:\Python\Lib\site-packages\selenium\webdriver\remote\webdriver.py:454: in execute
self.error_handler.check_response(response)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <selenium.webdriver.remote.errorhandler.ErrorHandler object at 0x000002680CCA12B0>
response = {'status': 404, 'value': '{"value":{"error":"no such window","message":"no such window: target window already closed\\...07FF74CAEA3EF]\\n\\tBaseThreadInitThunk [0x00007FFAFC6FE8D7+23]\\n\\tRtlUserThreadStart [0x00007FFAFD7BC34C+44]\\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):
try:
value = json.loads(value_json)
if isinstance(value, dict):
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", "<anonymous>")
if line:
file = f"{file}:{line}"
meth = frame.get("methodName", "<anonymous>")
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
> raise exception_class(message, screen, stacktrace)
E selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
E from unknown error: web view not found
E (Session info: chrome=127.0.6533.99)
E Stacktrace:
E GetHandleVerifier [0x00007FF74CB39632+30946]
E (No symbol) [0x00007FF74CAEE3C9]
E (No symbol) [0x00007FF74C9E6FDA]
E (No symbol) [0x00007FF74C9BCB85]
E (No symbol) [0x00007FF74CA637A7]
E (No symbol) [0x00007FF74CA7A771]
E (No symbol) [0x00007FF74CA5C813]
E (No symbol) [0x00007FF74CA2A6E5]
E (No symbol) [0x00007FF74CA2B021]
E GetHandleVerifier [0x00007FF74CC6F83D+1301229]
E GetHandleVerifier [0x00007FF74CC7BDB7+1351783]
E GetHandleVerifier [0x00007FF74CC72A03+1313971]
E GetHandleVerifier [0x00007FF74CB6DD06+245686]
E (No symbol) [0x00007FF74CAF758F]
E (No symbol) [0x00007FF74CAF3804]
E (No symbol) [0x00007FF74CAF3992]
E (No symbol) [0x00007FF74CAEA3EF]
E BaseThreadInitThunk [0x00007FFAFC6FE8D7+23]
E RtlUserThreadStart [0x00007FFAFD7BC34C+44]
D:\Python\Lib\site-packages\selenium\webdriver\remote\errorhandler.py:232: NoSuchWindowException
=================================================================================== warnings summary ====================================================================================
CMG_024_test.py:232
c:\Users\Administrator\Desktop\web8\CMG_024_test.py:232: PytestUnknownMarkWarning: Unknown pytest.mark.repeat - is this a typo? You can register custom marks to avoid this warning - for details, see https://docs.pytest.org/en/stable/how-to/mark.html
@pytest.mark.repeat(6)
-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
-------------------------------------------------------- generated xml file: C:\Users\Administrator\Desktop\web8\testresults.xml --------------------------------------------------------
HTTP error occurred: 404 Client Error: Not Found for url: http://192.168.11.110:5066/api/TestReport/upload-test-summary?reportId=0&endTime=1754731236491
------------------------------------------------- Generated html report: file:///C:/Users/Administrator/Desktop/web8/report/report.html -------------------------------------------------
================================================================================ short test summary info ================================================================================
ERROR CMG_024_test.py::Test_CMG024::test_add_qvlan - selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
ERROR CMG_024_test.py::Test_CMG024::test_add_qvlan_port[1234] - selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
ERROR CMG_024_test.py::Test_CMG024::test_qvlan_boundary - selenium.common.exceptions.NoSuchWindowException: Message: no such window: target window already closed
============================================================================= 1 warning, 3 errors in 20.23s =============================================================================
PS C:\Users\Administrator\Desktop\web8>
最新发布