Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(deps): update dependency trio to v0.28.0 #2115

Open
wants to merge 1 commit into
base: trunk
Choose a base branch
from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Dec 28, 2024

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
trio (changelog) ==0.27.0 -> ==0.28.0 age adoption passing confidence

Release Notes

python-trio/trio (trio)

v0.28.0

Compare Source

Full Changelog: python-trio/trio@v0.27.0...v0.28.0

Bugfixes

  • :func:inspect.iscoroutinefunction and the like now give correct answers when
    called on KI-protected functionhttps://github.com/python-trio/trio/issues/26702670)

  • Rework KeyboardInterrupt protection to track code objects, rather than frames,
    as protected or not. The new implementation no longer needs to access
    frame.f_locals dictionaries, so it won't artificially extend the lifetime of
    local variables. Since KeyboardInterrupt protection is now imposed statically
    (when a protected function is defined) rather than each time the function runs,
    its previously-noticeable performance overhead should now be near zero.
    The lack of a call-time wrapper has some other benefits as well:

    • :func:inspect.iscoroutinefunction and the like now give correct answers when
      called on KI-protected functions.

    • Calling a synchronous KI-protected function no longer pushes an additional stack
      frame, so tracebacks are clearer.

    • A synchronous KI-protected function invoked from C code (such as a weakref
      finalizer) is now guaranteed to start executing; previously there would be a brief
      window in which KeyboardInterrupt could be raised before the protection was
      established.

    One minor drawback of the new approach is that multiple instances of the same
    closure share a single KeyboardInterrupt protection state (because they share a
    single code object). That means that if you apply
    trio.lowlevel.enable_ki_protection to some of them
    and not others, you won't get the protection semantics you asked for. See the
    documentation of trio.lowlevel.enable_ki_protection
    for more details and a workarounhttps://github.com/python-trio/trio/issues/31083108)

  • Rework foreign async generator finalization to track async generator
    ids rather than mutating ag_frame.f_locals. This fixes an issue
    with the previous implementation: locals' lifetimes will no longer be
    extended by materialization in the ag_frame.f_locals dictionary that
    the previous finalization dispatcher logic needed to access to do its worhttps://github.com/python-trio/trio/issues/31123112)

  • Ensure that Pyright recognizes our underscore prefixed attributes for attrs classes. (https://github.com/python-trio/trio/issues/3114)

  • Fix trio.testing.RaisesGroup's typing. (https://github.com/python-trio/trio/issues/3141)

Improved documentation

Removals without deprecations

Miscellaneous internal changes


Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

Copy link
Contributor

qodo-merge-pro bot commented Dec 28, 2024

CI Failure Feedback 🧐

(Checks updated until commit 2123670)

Action: tests (macos, nightly, 3.13)

Failed stage: Run tests [❌]

Failed test name: test_edge.py

Failure summary:

The tests failed because Selenium was unable to obtain the Microsoft Edge driver. The specific error
occurred when trying to parse JSON from the Edge updates API:

  • The selenium-manager command failed with code 65 when trying to fetch Edge driver information
  • Error message indicates missing 'ArtifactName' field in JSON response from
    https://edgeupdates.microsoft.com/api/products/
  • This prevented Selenium from being able to locate and download the appropriate Edge driver
  • Multiple test cases in test_edge.py failed with NoSuchDriverException as a result

  • Relevant error logs:
    1:  ##[group]Operating System
    2:  macOS
    ...
    
    387:  timeout_minutes: 60
    388:  max_attempts: 3
    389:  command: cd examples/python
    390:  pytest --reruns 3
    391:  
    392:  retry_wait_seconds: 10
    393:  polling_interval_seconds: 1
    394:  warning_on_retry: true
    395:  continue_on_error: false
    ...
    
    435:  tests/elements/test_interaction.py .                                     [ 80%]
    436:  tests/interactions/test_alerts.py ...                                    [ 82%]
    437:  tests/interactions/test_print_options.py .......                         [ 86%]
    438:  tests/interactions/test_prints_page.py .                                 [ 87%]
    439:  tests/interactions/test_virtual_authenticator.py ..........              [ 94%]
    440:  tests/support/test_select_list.py ...                                    [ 96%]
    441:  tests/troubleshooting/test_logging.py .                                  [ 96%]
    442:  tests/waits/test_waits.py .....                                          [100%]
    443:  ==================================== ERRORS ====================================
    444:  _________________ ERROR at setup of test_set_browser_location __________________
    ...
    
    449:  browser = self._options.capabilities["browserName"]
    450:  try:
    451:  path = self._service.path
    452:  if path:
    453:  logger.debug(
    454:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    455:  )
    456:  if not Path(path).is_file():
    457:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    485:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    486:  SeleniumManager._process_logs(output["logs"])
    487:  result = output["result"]
    488:  if completed_proc.returncode:
    489:  >           raise WebDriverException(
    490:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    491:  )
    492:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --browser-version stable --language-binding python --output json; code: 65
    493:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    511:  browser = self._options.capabilities["browserName"]
    512:  try:
    513:  path = self._service.path
    514:  if path:
    515:  logger.debug(
    516:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    517:  )
    518:  if not Path(path).is_file():
    519:  raise ValueError(f"The path is not a valid file: {path}")
    520:  self._paths["driver_path"] = path
    521:  else:
    522:  output = SeleniumManager().binary_paths(self._to_args())
    523:  if Path(output["driver_path"]).is_file():
    524:  self._paths["driver_path"] = output["driver_path"]
    525:  else:
    526:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    527:  if Path(output["browser_path"]).is_file():
    528:  self._paths["browser_path"] = output["browser_path"]
    529:  else:
    530:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    531:  except Exception as err:
    532:  msg = f"Unable to obtain driver for {browser}"
    533:  >           raise NoSuchDriverException(msg) from err
    534:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    535:  /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/driver_finder.py:78: NoSuchDriverException
    536:  ____________________ ERROR at teardown of test_log_to_file _____________________
    ...
    
    539:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    540:  log_path = 'log_file_' + suffix + '.log'
    541:  yield log_path
    542:  logger = logging.getLogger('selenium')
    543:  for handler in logger.handlers:
    544:  logger.removeHandler(handler)
    545:  handler.close()
    546:  >       os.remove(log_path)
    547:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_241228_071813.log'
    548:  tests/conftest.py:102: FileNotFoundError
    549:  _____________________ ERROR at teardown of test_log_level ______________________
    ...
    
    552:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    553:  log_path = 'log_file_' + suffix + '.log'
    554:  yield log_path
    555:  logger = logging.getLogger('selenium')
    556:  for handler in logger.handlers:
    557:  logger.removeHandler(handler)
    558:  handler.close()
    559:  >       os.remove(log_path)
    560:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_241228_071814.log'
    561:  tests/conftest.py:102: FileNotFoundError
    562:  ____________________ ERROR at teardown of test_log_features ____________________
    ...
    
    565:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    566:  log_path = 'log_file_' + suffix + '.log'
    567:  yield log_path
    568:  logger = logging.getLogger('selenium')
    569:  for handler in logger.handlers:
    570:  logger.removeHandler(handler)
    571:  handler.close()
    572:  >       os.remove(log_path)
    573:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_241228_071814.log'
    574:  tests/conftest.py:102: FileNotFoundError
    575:  ____________________ ERROR at teardown of test_build_checks ____________________
    ...
    
    578:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    579:  log_path = 'log_file_' + suffix + '.log'
    580:  yield log_path
    581:  logger = logging.getLogger('selenium')
    582:  for handler in logger.handlers:
    583:  logger.removeHandler(handler)
    584:  handler.close()
    585:  >       os.remove(log_path)
    586:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_241228_071814.log'
    587:  tests/conftest.py:102: FileNotFoundError
    588:  =================================== FAILURES ===================================
    ...
    
    594:  browser = self._options.capabilities["browserName"]
    595:  try:
    596:  path = self._service.path
    597:  if path:
    598:  logger.debug(
    599:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    600:  )
    601:  if not Path(path).is_file():
    602:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    630:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    631:  SeleniumManager._process_logs(output["logs"])
    632:  result = output["result"]
    633:  if completed_proc.returncode:
    634:  >           raise WebDriverException(
    635:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    636:  )
    637:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    638:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    657:  browser = self._options.capabilities["browserName"]
    658:  try:
    659:  path = self._service.path
    660:  if path:
    661:  logger.debug(
    662:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    663:  )
    664:  if not Path(path).is_file():
    665:  raise ValueError(f"The path is not a valid file: {path}")
    666:  self._paths["driver_path"] = path
    667:  else:
    668:  output = SeleniumManager().binary_paths(self._to_args())
    669:  if Path(output["driver_path"]).is_file():
    670:  self._paths["driver_path"] = output["driver_path"]
    671:  else:
    672:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    673:  if Path(output["browser_path"]).is_file():
    674:  self._paths["browser_path"] = output["browser_path"]
    675:  else:
    676:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    677:  except Exception as err:
    678:  msg = f"Unable to obtain driver for {browser}"
    679:  >           raise NoSuchDriverException(msg) from err
    680:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    687:  browser = self._options.capabilities["browserName"]
    688:  try:
    689:  path = self._service.path
    690:  if path:
    691:  logger.debug(
    692:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    693:  )
    694:  if not Path(path).is_file():
    695:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    723:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    724:  SeleniumManager._process_logs(output["logs"])
    725:  result = output["result"]
    726:  if completed_proc.returncode:
    727:  >           raise WebDriverException(
    728:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    729:  )
    730:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    731:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    751:  browser = self._options.capabilities["browserName"]
    752:  try:
    753:  path = self._service.path
    754:  if path:
    755:  logger.debug(
    756:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    757:  )
    758:  if not Path(path).is_file():
    759:  raise ValueError(f"The path is not a valid file: {path}")
    760:  self._paths["driver_path"] = path
    761:  else:
    762:  output = SeleniumManager().binary_paths(self._to_args())
    763:  if Path(output["driver_path"]).is_file():
    764:  self._paths["driver_path"] = output["driver_path"]
    765:  else:
    766:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    767:  if Path(output["browser_path"]).is_file():
    768:  self._paths["browser_path"] = output["browser_path"]
    769:  else:
    770:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    771:  except Exception as err:
    772:  msg = f"Unable to obtain driver for {browser}"
    773:  >           raise NoSuchDriverException(msg) from err
    774:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    781:  browser = self._options.capabilities["browserName"]
    782:  try:
    783:  path = self._service.path
    784:  if path:
    785:  logger.debug(
    786:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    787:  )
    788:  if not Path(path).is_file():
    789:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    817:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    818:  SeleniumManager._process_logs(output["logs"])
    819:  result = output["result"]
    820:  if completed_proc.returncode:
    821:  >           raise WebDriverException(
    822:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    823:  )
    824:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    825:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    846:  browser = self._options.capabilities["browserName"]
    847:  try:
    848:  path = self._service.path
    849:  if path:
    850:  logger.debug(
    851:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    852:  )
    853:  if not Path(path).is_file():
    854:  raise ValueError(f"The path is not a valid file: {path}")
    855:  self._paths["driver_path"] = path
    856:  else:
    857:  output = SeleniumManager().binary_paths(self._to_args())
    858:  if Path(output["driver_path"]).is_file():
    859:  self._paths["driver_path"] = output["driver_path"]
    860:  else:
    861:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    862:  if Path(output["browser_path"]).is_file():
    863:  self._paths["browser_path"] = output["browser_path"]
    864:  else:
    865:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    866:  except Exception as err:
    867:  msg = f"Unable to obtain driver for {browser}"
    868:  >           raise NoSuchDriverException(msg) from err
    869:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    876:  browser = self._options.capabilities["browserName"]
    877:  try:
    878:  path = self._service.path
    879:  if path:
    880:  logger.debug(
    881:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    882:  )
    883:  if not Path(path).is_file():
    884:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    912:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    913:  SeleniumManager._process_logs(output["logs"])
    914:  result = output["result"]
    915:  if completed_proc.returncode:
    916:  >           raise WebDriverException(
    917:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    918:  )
    919:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    920:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    940:  browser = self._options.capabilities["browserName"]
    941:  try:
    942:  path = self._service.path
    943:  if path:
    944:  logger.debug(
    945:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    946:  )
    947:  if not Path(path).is_file():
    948:  raise ValueError(f"The path is not a valid file: {path}")
    949:  self._paths["driver_path"] = path
    950:  else:
    951:  output = SeleniumManager().binary_paths(self._to_args())
    952:  if Path(output["driver_path"]).is_file():
    953:  self._paths["driver_path"] = output["driver_path"]
    954:  else:
    955:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    956:  if Path(output["browser_path"]).is_file():
    957:  self._paths["browser_path"] = output["browser_path"]
    958:  else:
    959:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    960:  except Exception as err:
    961:  msg = f"Unable to obtain driver for {browser}"
    962:  >           raise NoSuchDriverException(msg) from err
    963:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    970:  browser = self._options.capabilities["browserName"]
    971:  try:
    972:  path = self._service.path
    973:  if path:
    974:  logger.debug(
    975:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    976:  )
    977:  if not Path(path).is_file():
    978:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1006:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1007:  SeleniumManager._process_logs(output["logs"])
    1008:  result = output["result"]
    1009:  if completed_proc.returncode:
    1010:  >           raise WebDriverException(
    1011:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1012:  )
    1013:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1014:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1034:  browser = self._options.capabilities["browserName"]
    1035:  try:
    1036:  path = self._service.path
    1037:  if path:
    1038:  logger.debug(
    1039:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1040:  )
    1041:  if not Path(path).is_file():
    1042:  raise ValueError(f"The path is not a valid file: {path}")
    1043:  self._paths["driver_path"] = path
    1044:  else:
    1045:  output = SeleniumManager().binary_paths(self._to_args())
    1046:  if Path(output["driver_path"]).is_file():
    1047:  self._paths["driver_path"] = output["driver_path"]
    1048:  else:
    1049:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1050:  if Path(output["browser_path"]).is_file():
    1051:  self._paths["browser_path"] = output["browser_path"]
    1052:  else:
    1053:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1054:  except Exception as err:
    1055:  msg = f"Unable to obtain driver for {browser}"
    1056:  >           raise NoSuchDriverException(msg) from err
    1057:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1064:  browser = self._options.capabilities["browserName"]
    1065:  try:
    1066:  path = self._service.path
    1067:  if path:
    1068:  logger.debug(
    1069:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1070:  )
    1071:  if not Path(path).is_file():
    1072:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1100:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1101:  SeleniumManager._process_logs(output["logs"])
    1102:  result = output["result"]
    1103:  if completed_proc.returncode:
    1104:  >           raise WebDriverException(
    1105:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1106:  )
    1107:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1108:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1128:  browser = self._options.capabilities["browserName"]
    1129:  try:
    1130:  path = self._service.path
    1131:  if path:
    1132:  logger.debug(
    1133:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1134:  )
    1135:  if not Path(path).is_file():
    1136:  raise ValueError(f"The path is not a valid file: {path}")
    1137:  self._paths["driver_path"] = path
    1138:  else:
    1139:  output = SeleniumManager().binary_paths(self._to_args())
    1140:  if Path(output["driver_path"]).is_file():
    1141:  self._paths["driver_path"] = output["driver_path"]
    1142:  else:
    1143:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1144:  if Path(output["browser_path"]).is_file():
    1145:  self._paths["browser_path"] = output["browser_path"]
    1146:  else:
    1147:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1148:  except Exception as err:
    1149:  msg = f"Unable to obtain driver for {browser}"
    1150:  >           raise NoSuchDriverException(msg) from err
    1151:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1158:  browser = self._options.capabilities["browserName"]
    1159:  try:
    1160:  path = self._service.path
    1161:  if path:
    1162:  logger.debug(
    1163:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1164:  )
    1165:  if not Path(path).is_file():
    1166:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1194:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1195:  SeleniumManager._process_logs(output["logs"])
    1196:  result = output["result"]
    1197:  if completed_proc.returncode:
    1198:  >           raise WebDriverException(
    1199:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1200:  )
    1201:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1202:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1222:  browser = self._options.capabilities["browserName"]
    1223:  try:
    1224:  path = self._service.path
    1225:  if path:
    1226:  logger.debug(
    1227:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1228:  )
    1229:  if not Path(path).is_file():
    1230:  raise ValueError(f"The path is not a valid file: {path}")
    1231:  self._paths["driver_path"] = path
    1232:  else:
    1233:  output = SeleniumManager().binary_paths(self._to_args())
    1234:  if Path(output["driver_path"]).is_file():
    1235:  self._paths["driver_path"] = output["driver_path"]
    1236:  else:
    1237:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1238:  if Path(output["browser_path"]).is_file():
    1239:  self._paths["browser_path"] = output["browser_path"]
    1240:  else:
    1241:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1242:  except Exception as err:
    1243:  msg = f"Unable to obtain driver for {browser}"
    1244:  >           raise NoSuchDriverException(msg) from err
    1245:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1252:  browser = self._options.capabilities["browserName"]
    1253:  try:
    1254:  path = self._service.path
    1255:  if path:
    1256:  logger.debug(
    1257:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1258:  )
    1259:  if not Path(path).is_file():
    1260:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1288:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1289:  SeleniumManager._process_logs(output["logs"])
    1290:  result = output["result"]
    1291:  if completed_proc.returncode:
    1292:  >           raise WebDriverException(
    1293:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1294:  )
    1295:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1296:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1316:  browser = self._options.capabilities["browserName"]
    1317:  try:
    1318:  path = self._service.path
    1319:  if path:
    1320:  logger.debug(
    1321:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1322:  )
    1323:  if not Path(path).is_file():
    1324:  raise ValueError(f"The path is not a valid file: {path}")
    1325:  self._paths["driver_path"] = path
    1326:  else:
    1327:  output = SeleniumManager().binary_paths(self._to_args())
    1328:  if Path(output["driver_path"]).is_file():
    1329:  self._paths["driver_path"] = output["driver_path"]
    1330:  else:
    1331:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1332:  if Path(output["browser_path"]).is_file():
    1333:  self._paths["browser_path"] = output["browser_path"]
    1334:  else:
    1335:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1336:  except Exception as err:
    1337:  msg = f"Unable to obtain driver for {browser}"
    1338:  >           raise NoSuchDriverException(msg) from err
    1339:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1346:  browser = self._options.capabilities["browserName"]
    1347:  try:
    1348:  path = self._service.path
    1349:  if path:
    1350:  logger.debug(
    1351:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1352:  )
    1353:  if not Path(path).is_file():
    1354:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1382:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1383:  SeleniumManager._process_logs(output["logs"])
    1384:  result = output["result"]
    1385:  if completed_proc.returncode:
    1386:  >           raise WebDriverException(
    1387:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1388:  )
    1389:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1390:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1410:  browser = self._options.capabilities["browserName"]
    1411:  try:
    1412:  path = self._service.path
    1413:  if path:
    1414:  logger.debug(
    1415:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1416:  )
    1417:  if not Path(path).is_file():
    1418:  raise ValueError(f"The path is not a valid file: {path}")
    1419:  self._paths["driver_path"] = path
    1420:  else:
    1421:  output = SeleniumManager().binary_paths(self._to_args())
    1422:  if Path(output["driver_path"]).is_file():
    1423:  self._paths["driver_path"] = output["driver_path"]
    1424:  else:
    1425:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1426:  if Path(output["browser_path"]).is_file():
    1427:  self._paths["browser_path"] = output["browser_path"]
    1428:  else:
    1429:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1430:  except Exception as err:
    1431:  msg = f"Unable to obtain driver for {browser}"
    1432:  >           raise NoSuchDriverException(msg) from err
    1433:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1440:  browser = self._options.capabilities["browserName"]
    1441:  try:
    1442:  path = self._service.path
    1443:  if path:
    1444:  logger.debug(
    1445:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1446:  )
    1447:  if not Path(path).is_file():
    1448:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1476:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1477:  SeleniumManager._process_logs(output["logs"])
    1478:  result = output["result"]
    1479:  if completed_proc.returncode:
    1480:  >           raise WebDriverException(
    1481:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1482:  )
    1483:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1484:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1504:  browser = self._options.capabilities["browserName"]
    1505:  try:
    1506:  path = self._service.path
    1507:  if path:
    1508:  logger.debug(
    1509:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1510:  )
    1511:  if not Path(path).is_file():
    1512:  raise ValueError(f"The path is not a valid file: {path}")
    1513:  self._paths["driver_path"] = path
    1514:  else:
    1515:  output = SeleniumManager().binary_paths(self._to_args())
    1516:  if Path(output["driver_path"]).is_file():
    1517:  self._paths["driver_path"] = output["driver_path"]
    1518:  else:
    1519:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1520:  if Path(output["browser_path"]).is_file():
    1521:  self._paths["browser_path"] = output["browser_path"]
    1522:  else:
    1523:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1524:  except Exception as err:
    1525:  msg = f"Unable to obtain driver for {browser}"
    1526:  >           raise NoSuchDriverException(msg) from err
    1527:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1534:  browser = self._options.capabilities["browserName"]
    1535:  try:
    1536:  path = self._service.path
    1537:  if path:
    1538:  logger.debug(
    1539:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1540:  )
    1541:  if not Path(path).is_file():
    1542:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1570:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1571:  SeleniumManager._process_logs(output["logs"])
    1572:  result = output["result"]
    1573:  if completed_proc.returncode:
    1574:  >           raise WebDriverException(
    1575:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1576:  )
    1577:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1578:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1596:  browser = self._options.capabilities["browserName"]
    1597:  try:
    1598:  path = self._service.path
    1599:  if path:
    1600:  logger.debug(
    1601:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1602:  )
    1603:  if not Path(path).is_file():
    1604:  raise ValueError(f"The path is not a valid file: {path}")
    1605:  self._paths["driver_path"] = path
    1606:  else:
    1607:  output = SeleniumManager().binary_paths(self._to_args())
    1608:  if Path(output["driver_path"]).is_file():
    1609:  self._paths["driver_path"] = output["driver_path"]
    1610:  else:
    1611:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1612:  if Path(output["browser_path"]).is_file():
    1613:  self._paths["browser_path"] = output["browser_path"]
    1614:  else:
    1615:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1616:  except Exception as err:
    1617:  msg = f"Unable to obtain driver for {browser}"
    1618:  >           raise NoSuchDriverException(msg) from err
    1619:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1626:  browser = self._options.capabilities["browserName"]
    1627:  try:
    1628:  path = self._service.path
    1629:  if path:
    1630:  logger.debug(
    1631:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1632:  )
    1633:  if not Path(path).is_file():
    1634:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1662:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1663:  SeleniumManager._process_logs(output["logs"])
    1664:  result = output["result"]
    1665:  if completed_proc.returncode:
    1666:  >           raise WebDriverException(
    1667:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1668:  )
    1669:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1670:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1688:  browser = self._options.capabilities["browserName"]
    1689:  try:
    1690:  path = self._service.path
    1691:  if path:
    1692:  logger.debug(
    1693:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1694:  )
    1695:  if not Path(path).is_file():
    1696:  raise ValueError(f"The path is not a valid file: {path}")
    1697:  self._paths["driver_path"] = path
    1698:  else:
    1699:  output = SeleniumManager().binary_paths(self._to_args())
    1700:  if Path(output["driver_path"]).is_file():
    1701:  self._paths["driver_path"] = output["driver_path"]
    1702:  else:
    1703:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1704:  if Path(output["browser_path"]).is_file():
    1705:  self._paths["browser_path"] = output["browser_path"]
    1706:  else:
    1707:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1708:  except Exception as err:
    1709:  msg = f"Unable to obtain driver for {browser}"
    1710:  >           raise NoSuchDriverException(msg) from err
    1711:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1718:  browser = self._options.capabilities["browserName"]
    1719:  try:
    1720:  path = self._service.path
    1721:  if path:
    1722:  logger.debug(
    1723:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1724:  )
    1725:  if not Path(path).is_file():
    1726:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1754:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1755:  SeleniumManager._process_logs(output["logs"])
    1756:  result = output["result"]
    1757:  if completed_proc.returncode:
    1758:  >           raise WebDriverException(
    1759:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1760:  )
    1761:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1762:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1780:  browser = self._options.capabilities["browserName"]
    1781:  try:
    1782:  path = self._service.path
    1783:  if path:
    1784:  logger.debug(
    1785:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1786:  )
    1787:  if not Path(path).is_file():
    1788:  raise ValueError(f"The path is not a valid file: {path}")
    1789:  self._paths["driver_path"] = path
    1790:  else:
    1791:  output = SeleniumManager().binary_paths(self._to_args())
    1792:  if Path(output["driver_path"]).is_file():
    1793:  self._paths["driver_path"] = output["driver_path"]
    1794:  else:
    1795:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1796:  if Path(output["browser_path"]).is_file():
    1797:  self._paths["browser_path"] = output["browser_path"]
    1798:  else:
    1799:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1800:  except Exception as err:
    1801:  msg = f"Unable to obtain driver for {browser}"
    1802:  >           raise NoSuchDriverException(msg) from err
    1803:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1810:  browser = self._options.capabilities["browserName"]
    1811:  try:
    1812:  path = self._service.path
    1813:  if path:
    1814:  logger.debug(
    1815:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1816:  )
    1817:  if not Path(path).is_file():
    1818:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1846:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1847:  SeleniumManager._process_logs(output["logs"])
    1848:  result = output["result"]
    1849:  if completed_proc.returncode:
    1850:  >           raise WebDriverException(
    1851:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1852:  )
    1853:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1854:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    1872:  browser = self._options.capabilities["browserName"]
    1873:  try:
    1874:  path = self._service.path
    1875:  if path:
    1876:  logger.debug(
    1877:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1878:  )
    1879:  if not Path(path).is_file():
    1880:  raise ValueError(f"The path is not a valid file: {path}")
    1881:  self._paths["driver_path"] = path
    1882:  else:
    1883:  output = SeleniumManager().binary_paths(self._to_args())
    1884:  if Path(output["driver_path"]).is_file():
    1885:  self._paths["driver_path"] = output["driver_path"]
    1886:  else:
    1887:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1888:  if Path(output["browser_path"]).is_file():
    1889:  self._paths["browser_path"] = output["browser_path"]
    1890:  else:
    1891:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1892:  except Exception as err:
    1893:  msg = f"Unable to obtain driver for {browser}"
    1894:  >           raise NoSuchDriverException(msg) from err
    1895:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    1904:  tests/bidi/test_bidi_logging.py:30
    1905:  /Users/runner/work/seleniumhq.github.io/seleniumhq.github.io/examples/python/tests/bidi/test_bidi_logging.py:30: PytestUnknownMarkWarning: Unknown pytest.mark.driver_type - 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
    1906:  @pytest.mark.driver_type("bidi")
    1907:  tests/bidi/test_bidi_logging.py:42
    1908:  /Users/runner/work/seleniumhq.github.io/seleniumhq.github.io/examples/python/tests/bidi/test_bidi_logging.py:42: PytestUnknownMarkWarning: Unknown pytest.mark.driver_type - 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
    1909:  @pytest.mark.driver_type("bidi")
    1910:  -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
    1911:  =========================== short test summary info ============================
    1912:  FAILED tests/browsers/test_edge.py::test_basic_options - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1913:  FAILED tests/browsers/test_edge.py::test_args - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1914:  FAILED tests/browsers/test_edge.py::test_add_extension - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1915:  FAILED tests/browsers/test_edge.py::test_keep_browser_open - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1916:  FAILED tests/browsers/test_edge.py::test_exclude_switches - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1917:  FAILED tests/browsers/test_edge.py::test_log_to_file - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1918:  FAILED tests/browsers/test_edge.py::test_log_to_stdout - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1919:  FAILED tests/browsers/test_edge.py::test_log_level - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1920:  FAILED tests/browsers/test_edge.py::test_log_features - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1921:  FAILED tests/browsers/test_edge.py::test_build_checks - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1922:  FAILED tests/browsers/test_edge.py::test_set_network_conditions - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1923:  FAILED tests/browsers/test_edge.py::test_set_permissions - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1924:  FAILED tests/browsers/test_edge.py::test_cast_features - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1925:  FAILED tests/browsers/test_edge.py::test_get_browser_logs - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1926:  ERROR tests/browsers/test_edge.py::test_set_browser_location - selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    1927:  ERROR tests/browsers/test_edge.py::test_log_to_file - FileNotFoundError: [Errno 2] No such file or directory: 'log_file_241228_071813.log'
    1928:  ERROR tests/browsers/test_edge.py::test_log_level - FileNotFoundError: [Errno 2] No such file or directory: 'log_file_241228_071814.log'
    1929:  ERROR tests/browsers/test_edge.py::test_log_features - FileNotFoundError: [Errno 2] No such file or directory: 'log_file_241228_071814.log'
    1930:  ERROR tests/browsers/test_edge.py::test_build_checks - FileNotFoundError: [Errno 2] No such file or directory: 'log_file_241228_071814.log'
    1931:  = 14 failed, 123 passed, 15 skipped, 4 warnings, 5 errors, 45 rerun in 253.98s (0:04:13) =
    1932:  ##[warning]Attempt 1 failed. Reason: Child_process exited with error code 1
    ...
    
    1960:  tests/elements/test_interaction.py .                                     [ 80%]
    1961:  tests/interactions/test_alerts.py ...                                    [ 82%]
    1962:  tests/interactions/test_print_options.py .......                         [ 86%]
    1963:  tests/interactions/test_prints_page.py .                                 [ 87%]
    1964:  tests/interactions/test_virtual_authenticator.py ..........              [ 94%]
    1965:  tests/support/test_select_list.py ...                                    [ 96%]
    1966:  tests/troubleshooting/test_logging.py .                                  [ 96%]
    1967:  tests/waits/test_waits.py .....                                          [100%]
    1968:  ==================================== ERRORS ====================================
    1969:  _________________ ERROR at setup of test_set_browser_location __________________
    ...
    
    1974:  browser = self._options.capabilities["browserName"]
    1975:  try:
    1976:  path = self._service.path
    1977:  if path:
    1978:  logger.debug(
    1979:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1980:  )
    1981:  if not Path(path).is_file():
    1982:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    2010:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    2011:  SeleniumManager._process_logs(output["logs"])
    2012:  result = output["result"]
    2013:  if completed_proc.returncode:
    2014:  >           raise WebDriverException(
    2015:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    2016:  )
    2017:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --browser-version stable --language-binding python --output json; code: 65
    2018:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    2036:  browser = self._options.capabilities["browserName"]
    2037:  try:
    2038:  path = self._service.path
    2039:  if path:
    2040:  logger.debug(
    2041:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2042:  )
    2043:  if not Path(path).is_file():
    2044:  raise ValueError(f"The path is not a valid file: {path}")
    2045:  self._paths["driver_path"] = path
    2046:  else:
    2047:  output = SeleniumManager().binary_paths(self._to_args())
    2048:  if Path(output["driver_path"]).is_file():
    2049:  self._paths["driver_path"] = output["driver_path"]
    2050:  else:
    2051:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    2052:  if Path(output["browser_path"]).is_file():
    2053:  self._paths["browser_path"] = output["browser_path"]
    2054:  else:
    2055:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    2056:  except Exception as err:
    2057:  msg = f"Unable to obtain driver for {browser}"
    2058:  >           raise NoSuchDriverException(msg) from err
    2059:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    2060:  /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/driver_finder.py:78: NoSuchDriverException
    2061:  ____________________ ERROR at teardown of test_log_to_file _____________________
    ...
    
    2064:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    2065:  log_path = 'log_file_' + suffix + '.log'
    2066:  yield log_path
    2067:  logger = logging.getLogger('selenium')
    2068:  for handler in logger.handlers:
    2069:  logger.removeHandler(handler)
    2070:  handler.close()
    2071:  >       os.remove(log_path)
    2072:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_241228_072224.log'
    2073:  tests/conftest.py:102: FileNotFoundError
    2074:  _____________________ ERROR at teardown of test_log_level ______________________
    ...
    
    2077:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    2078:  log_path = 'log_file_' + suffix + '.log'
    2079:  yield log_path
    2080:  logger = logging.getLogger('selenium')
    2081:  for handler in logger.handlers:
    2082:  logger.removeHandler(handler)
    2083:  handler.close()
    2084:  >       os.remove(log_path)
    2085:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_241228_072224.log'
    2086:  tests/conftest.py:102: FileNotFoundError
    2087:  ____________________ ERROR at teardown of test_log_features ____________________
    ...
    
    2090:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    2091:  log_path = 'log_file_' + suffix + '.log'
    2092:  yield log_path
    2093:  logger = logging.getLogger('selenium')
    2094:  for handler in logger.handlers:
    2095:  logger.removeHandler(handler)
    2096:  handler.close()
    2097:  >       os.remove(log_path)
    2098:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_241228_072225.log'
    2099:  tests/conftest.py:102: FileNotFoundError
    2100:  ____________________ ERROR at teardown of test_build_checks ____________________
    ...
    
    2103:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    2104:  log_path = 'log_file_' + suffix + '.log'
    2105:  yield log_path
    2106:  logger = logging.getLogger('selenium')
    2107:  for handler in logger.handlers:
    2108:  logger.removeHandler(handler)
    2109:  handler.close()
    2110:  >       os.remove(log_path)
    2111:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_241228_072225.log'
    2112:  tests/conftest.py:102: FileNotFoundError
    2113:  =================================== FAILURES ===================================
    ...
    
    2119:  browser = self._options.capabilities["browserName"]
    2120:  try:
    2121:  path = self._service.path
    2122:  if path:
    2123:  logger.debug(
    2124:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2125:  )
    2126:  if not Path(path).is_file():
    2127:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    2155:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    2156:  SeleniumManager._process_logs(output["logs"])
    2157:  result = output["result"]
    2158:  if completed_proc.returncode:
    2159:  >           raise WebDriverException(
    2160:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    2161:  )
    2162:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    2163:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    2182:  browser = self._options.capabilities["browserName"]
    2183:  try:
    2184:  path = self._service.path
    2185:  if path:
    2186:  logger.debug(
    2187:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2188:  )
    2189:  if not Path(path).is_file():
    2190:  raise ValueError(f"The path is not a valid file: {path}")
    2191:  self._paths["driver_path"] = path
    2192:  else:
    2193:  output = SeleniumManager().binary_paths(self._to_args())
    2194:  if Path(output["driver_path"]).is_file():
    2195:  self._paths["driver_path"] = output["driver_path"]
    2196:  else:
    2197:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    2198:  if Path(output["browser_path"]).is_file():
    2199:  self._paths["browser_path"] = output["browser_path"]
    2200:  else:
    2201:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    2202:  except Exception as err:
    2203:  msg = f"Unable to obtain driver for {browser}"
    2204:  >           raise NoSuchDriverException(msg) from err
    2205:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    2212:  browser = self._options.capabilities["browserName"]
    2213:  try:
    2214:  path = self._service.path
    2215:  if path:
    2216:  logger.debug(
    2217:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2218:  )
    2219:  if not Path(path).is_file():
    2220:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    2248:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    2249:  SeleniumManager._process_logs(output["logs"])
    2250:  result = output["result"]
    2251:  if completed_proc.returncode:
    2252:  >           raise WebDriverException(
    2253:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    2254:  )
    2255:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    2256:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    2276:  browser = self._options.capabilities["browserName"]
    2277:  try:
    2278:  path = self._service.path
    2279:  if path:
    2280:  logger.debug(
    2281:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2282:  )
    2283:  if not Path(path).is_file():
    2284:  raise ValueError(f"The path is not a valid file: {path}")
    2285:  self._paths["driver_path"] = path
    2286:  else:
    2287:  output = SeleniumManager().binary_paths(self._to_args())
    2288:  if Path(output["driver_path"]).is_file():
    2289:  self._paths["driver_path"] = output["driver_path"]
    2290:  else:
    2291:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    2292:  if Path(output["browser_path"]).is_file():
    2293:  self._paths["browser_path"] = output["browser_path"]
    2294:  else:
    2295:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    2296:  except Exception as err:
    2297:  msg = f"Unable to obtain driver for {browser}"
    2298:  >           raise NoSuchDriverException(msg) from err
    2299:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    2306:  browser = self._options.capabilities["browserName"]
    2307:  try:
    2308:  path = self._service.path
    2309:  if path:
    2310:  logger.debug(
    2311:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2312:  )
    2313:  if not Path(path).is_file():
    2314:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    2342:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    2343:  SeleniumManager._process_logs(output["logs"])
    2344:  result = output["result"]
    2345:  if completed_proc.returncode:
    2346:  >           raise WebDriverException(
    2347:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    2348:  )
    2349:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    2350:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    2371:  browser = self._options.capabilities["browserName"]
    2372:  try:
    2373:  path = self._service.path
    2374:  if path:
    2375:  logger.debug(
    2376:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2377:  )
    2378:  if not Path(path).is_file():
    2379:  raise ValueError(f"The path is not a valid file: {path}")
    2380:  self._paths["driver_path"] = path
    2381:  else:
    2382:  output = SeleniumManager().binary_paths(self._to_args())
    2383:  if Path(output["driver_path"]).is_file():
    2384:  self._paths["driver_path"] = output["driver_path"]
    2385:  else:
    2386:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    2387:  if Path(output["browser_path"]).is_file():
    2388:  self._paths["browser_path"] = output["browser_path"]
    2389:  else:
    2390:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    2391:  except Exception as err:
    2392:  msg = f"Unable to obtain driver for {browser}"
    2393:  >           raise NoSuchDriverException(msg) from err
    2394:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.dev/documentation/webdriver/troubleshooting/errors/driver_location
    ...
    
    2401:  browser = self._options.capabilities["browserName"]
    2402:  try:
    2403:  path = self._service.path
    2404:  if path:
    2405:  logger.debug(
    2406:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2407:  )
    2408:  if not Path(path).is_file():
    2409:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    2437:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    2438:  SeleniumManager._process_logs(output["logs"])
    2439:  result = output["result"]
    2440:  if completed_proc.returncode:
    2441:  >           raise WebDriverException(
    2442:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    2443:  )
    2444:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.13/lib/python3.13/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    2445:  E           {'code': 65, 'message': 'Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing field `ArtifactName` at line 1 column 467', 'driver_path': '', 'browser_path': ''}
    ...
    
    2465:  browser = self._options.capabilities["browserName"]
    2466:  try:
    2467:  path = self._service.path
    2468:  if path:
    2469:  logger.debug(
    2470:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2471:  )
    2472:  if not Path(path).is_file():
    2473:  raise ValueError(f"The path is not a valid file: {path}")
    2474:  self._paths["driver_path"] = path
    2475:  else:
    2476:  output = SeleniumManager().binary_paths(self._to_args())
    2477:  if Path(output["driver_path"]).is_file():
    2478:  self._paths["driver_path"] = output["driver_path"]
    2479:  else:
    2480:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    2481:  if Path(output["browser_path"]).is_file():
    2482:  self._paths["browser_path"] = output["browser_path"]
    2483:  else:
    2484:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    2485:  except Exception as err:
    2486:  msg = f"Unable to obtain driver for {browser}"
    2487:  >           raise NoSuchDriverException(msg) from err
    2488:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, ...

    Copy link

    netlify bot commented Dec 28, 2024

    Deploy Preview for selenium-dev ready!

    Name Link
    🔨 Latest commit 2123670
    🔍 Latest deploy log https://app.netlify.com/sites/selenium-dev/deploys/676fa5b58f954200085a40e2
    😎 Deploy Preview https://deploy-preview-2115--selenium-dev.netlify.app
    📱 Preview on mobile
    Toggle QR Code...

    QR Code

    Use your smartphone camera to open QR code link.

    To edit notification comments on pull requests, go to your Netlify site configuration.

    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
    Labels
    None yet
    Projects
    None yet
    Development

    Successfully merging this pull request may close these issues.

    0 participants