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

Closed
wants to merge 2 commits into 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 0c1b77e)

Action: tests (macos, stable, 3.10)

Failed stage: Run tests [❌]

Failed test name: test_basic_options

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:

  • Error message: "Error parsing JSON from URL https://edgeupdates.microsoft.com/api/products/ missing
    field ArtifactName at line 1 column 467"
  • This caused the Selenium Manager to fail with code 65 when trying to locate and download the Edge
    driver
  • As a result, 14 Edge browser tests failed with "NoSuchDriverException" and 4 log file related tests
    failed with "FileNotFoundError"

  • Relevant error logs:
    1:  ##[group]Operating System
    2:  macOS
    ...
    
    312:  timeout_minutes: 60
    313:  max_attempts: 3
    314:  command: cd examples/python
    315:  pytest --reruns 3
    316:  
    317:  retry_wait_seconds: 10
    318:  polling_interval_seconds: 1
    319:  warning_on_retry: true
    320:  continue_on_error: false
    ...
    
    361:  tests/elements/test_locators.py ........                                 [ 81%]
    362:  tests/interactions/test_alerts.py ...                                    [ 83%]
    363:  tests/interactions/test_print_options.py .......                         [ 87%]
    364:  tests/interactions/test_prints_page.py .                                 [ 88%]
    365:  tests/interactions/test_virtual_authenticator.py ..........              [ 94%]
    366:  tests/support/test_select_list.py ...                                    [ 96%]
    367:  tests/troubleshooting/test_logging.py .                                  [ 96%]
    368:  tests/waits/test_waits.py .....                                          [100%]
    369:  ==================================== ERRORS ====================================
    370:  _________________ ERROR at setup of test_set_browser_location __________________
    ...
    
    375:  browser = self._options.capabilities["browserName"]
    376:  try:
    377:  path = self._service.path
    378:  if path:
    379:  logger.debug(
    380:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    381:  )
    382:  if not Path(path).is_file():
    383:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    411:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    412:  SeleniumManager._process_logs(output["logs"])
    413:  result = output["result"]
    414:  if completed_proc.returncode:
    415:  >           raise WebDriverException(
    416:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    417:  )
    418:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --browser-version stable --language-binding python --output json; code: 65
    419:  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': ''}
    ...
    
    437:  browser = self._options.capabilities["browserName"]
    438:  try:
    439:  path = self._service.path
    440:  if path:
    441:  logger.debug(
    442:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    443:  )
    444:  if not Path(path).is_file():
    445:  raise ValueError(f"The path is not a valid file: {path}")
    446:  self._paths["driver_path"] = path
    447:  else:
    448:  output = SeleniumManager().binary_paths(self._to_args())
    449:  if Path(output["driver_path"]).is_file():
    450:  self._paths["driver_path"] = output["driver_path"]
    451:  else:
    452:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    453:  if Path(output["browser_path"]).is_file():
    454:  self._paths["browser_path"] = output["browser_path"]
    455:  else:
    456:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    457:  except Exception as err:
    458:  msg = f"Unable to obtain driver for {browser}"
    459:  >           raise NoSuchDriverException(msg) from err
    460:  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
    461:  /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/driver_finder.py:78: NoSuchDriverException
    462:  ____________________ ERROR at teardown of test_log_to_file _____________________
    ...
    
    465:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    466:  log_path = 'log_file_' + suffix + '.log'
    467:  yield log_path
    468:  logger = logging.getLogger('selenium')
    469:  for handler in logger.handlers:
    470:  logger.removeHandler(handler)
    471:  handler.close()
    472:  >       os.remove(log_path)
    473:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250103_054516.log'
    474:  tests/conftest.py:102: FileNotFoundError
    475:  _____________________ ERROR at teardown of test_log_level ______________________
    ...
    
    478:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    479:  log_path = 'log_file_' + suffix + '.log'
    480:  yield log_path
    481:  logger = logging.getLogger('selenium')
    482:  for handler in logger.handlers:
    483:  logger.removeHandler(handler)
    484:  handler.close()
    485:  >       os.remove(log_path)
    486:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250103_054517.log'
    487:  tests/conftest.py:102: FileNotFoundError
    488:  ____________________ ERROR at teardown of test_log_features ____________________
    ...
    
    491:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    492:  log_path = 'log_file_' + suffix + '.log'
    493:  yield log_path
    494:  logger = logging.getLogger('selenium')
    495:  for handler in logger.handlers:
    496:  logger.removeHandler(handler)
    497:  handler.close()
    498:  >       os.remove(log_path)
    499:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250103_054517.log'
    500:  tests/conftest.py:102: FileNotFoundError
    501:  ____________________ ERROR at teardown of test_build_checks ____________________
    ...
    
    504:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    505:  log_path = 'log_file_' + suffix + '.log'
    506:  yield log_path
    507:  logger = logging.getLogger('selenium')
    508:  for handler in logger.handlers:
    509:  logger.removeHandler(handler)
    510:  handler.close()
    511:  >       os.remove(log_path)
    512:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250103_054517.log'
    513:  tests/conftest.py:102: FileNotFoundError
    514:  =================================== FAILURES ===================================
    ...
    
    520:  browser = self._options.capabilities["browserName"]
    521:  try:
    522:  path = self._service.path
    523:  if path:
    524:  logger.debug(
    525:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    526:  )
    527:  if not Path(path).is_file():
    528:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    556:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    557:  SeleniumManager._process_logs(output["logs"])
    558:  result = output["result"]
    559:  if completed_proc.returncode:
    560:  >           raise WebDriverException(
    561:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    562:  )
    563:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    564:  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': ''}
    ...
    
    583:  browser = self._options.capabilities["browserName"]
    584:  try:
    585:  path = self._service.path
    586:  if path:
    587:  logger.debug(
    588:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    589:  )
    590:  if not Path(path).is_file():
    591:  raise ValueError(f"The path is not a valid file: {path}")
    592:  self._paths["driver_path"] = path
    593:  else:
    594:  output = SeleniumManager().binary_paths(self._to_args())
    595:  if Path(output["driver_path"]).is_file():
    596:  self._paths["driver_path"] = output["driver_path"]
    597:  else:
    598:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    599:  if Path(output["browser_path"]).is_file():
    600:  self._paths["browser_path"] = output["browser_path"]
    601:  else:
    602:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    603:  except Exception as err:
    604:  msg = f"Unable to obtain driver for {browser}"
    605:  >           raise NoSuchDriverException(msg) from err
    606:  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
    ...
    
    613:  browser = self._options.capabilities["browserName"]
    614:  try:
    615:  path = self._service.path
    616:  if path:
    617:  logger.debug(
    618:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    619:  )
    620:  if not Path(path).is_file():
    621:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    649:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    650:  SeleniumManager._process_logs(output["logs"])
    651:  result = output["result"]
    652:  if completed_proc.returncode:
    653:  >           raise WebDriverException(
    654:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    655:  )
    656:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    657:  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': ''}
    ...
    
    677:  browser = self._options.capabilities["browserName"]
    678:  try:
    679:  path = self._service.path
    680:  if path:
    681:  logger.debug(
    682:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    683:  )
    684:  if not Path(path).is_file():
    685:  raise ValueError(f"The path is not a valid file: {path}")
    686:  self._paths["driver_path"] = path
    687:  else:
    688:  output = SeleniumManager().binary_paths(self._to_args())
    689:  if Path(output["driver_path"]).is_file():
    690:  self._paths["driver_path"] = output["driver_path"]
    691:  else:
    692:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    693:  if Path(output["browser_path"]).is_file():
    694:  self._paths["browser_path"] = output["browser_path"]
    695:  else:
    696:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    697:  except Exception as err:
    698:  msg = f"Unable to obtain driver for {browser}"
    699:  >           raise NoSuchDriverException(msg) from err
    700:  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
    ...
    
    707:  browser = self._options.capabilities["browserName"]
    708:  try:
    709:  path = self._service.path
    710:  if path:
    711:  logger.debug(
    712:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    713:  )
    714:  if not Path(path).is_file():
    715:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    743:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    744:  SeleniumManager._process_logs(output["logs"])
    745:  result = output["result"]
    746:  if completed_proc.returncode:
    747:  >           raise WebDriverException(
    748:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    749:  )
    750:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    751:  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': ''}
    ...
    
    772:  browser = self._options.capabilities["browserName"]
    773:  try:
    774:  path = self._service.path
    775:  if path:
    776:  logger.debug(
    777:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    778:  )
    779:  if not Path(path).is_file():
    780:  raise ValueError(f"The path is not a valid file: {path}")
    781:  self._paths["driver_path"] = path
    782:  else:
    783:  output = SeleniumManager().binary_paths(self._to_args())
    784:  if Path(output["driver_path"]).is_file():
    785:  self._paths["driver_path"] = output["driver_path"]
    786:  else:
    787:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    788:  if Path(output["browser_path"]).is_file():
    789:  self._paths["browser_path"] = output["browser_path"]
    790:  else:
    791:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    792:  except Exception as err:
    793:  msg = f"Unable to obtain driver for {browser}"
    794:  >           raise NoSuchDriverException(msg) from err
    795:  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
    ...
    
    802:  browser = self._options.capabilities["browserName"]
    803:  try:
    804:  path = self._service.path
    805:  if path:
    806:  logger.debug(
    807:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    808:  )
    809:  if not Path(path).is_file():
    810:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    838:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    839:  SeleniumManager._process_logs(output["logs"])
    840:  result = output["result"]
    841:  if completed_proc.returncode:
    842:  >           raise WebDriverException(
    843:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    844:  )
    845:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    846:  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': ''}
    ...
    
    866:  browser = self._options.capabilities["browserName"]
    867:  try:
    868:  path = self._service.path
    869:  if path:
    870:  logger.debug(
    871:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    872:  )
    873:  if not Path(path).is_file():
    874:  raise ValueError(f"The path is not a valid file: {path}")
    875:  self._paths["driver_path"] = path
    876:  else:
    877:  output = SeleniumManager().binary_paths(self._to_args())
    878:  if Path(output["driver_path"]).is_file():
    879:  self._paths["driver_path"] = output["driver_path"]
    880:  else:
    881:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    882:  if Path(output["browser_path"]).is_file():
    883:  self._paths["browser_path"] = output["browser_path"]
    884:  else:
    885:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    886:  except Exception as err:
    887:  msg = f"Unable to obtain driver for {browser}"
    888:  >           raise NoSuchDriverException(msg) from err
    889:  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
    ...
    
    896:  browser = self._options.capabilities["browserName"]
    897:  try:
    898:  path = self._service.path
    899:  if path:
    900:  logger.debug(
    901:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    902:  )
    903:  if not Path(path).is_file():
    904:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    932:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    933:  SeleniumManager._process_logs(output["logs"])
    934:  result = output["result"]
    935:  if completed_proc.returncode:
    936:  >           raise WebDriverException(
    937:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    938:  )
    939:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    940:  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': ''}
    ...
    
    960:  browser = self._options.capabilities["browserName"]
    961:  try:
    962:  path = self._service.path
    963:  if path:
    964:  logger.debug(
    965:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    966:  )
    967:  if not Path(path).is_file():
    968:  raise ValueError(f"The path is not a valid file: {path}")
    969:  self._paths["driver_path"] = path
    970:  else:
    971:  output = SeleniumManager().binary_paths(self._to_args())
    972:  if Path(output["driver_path"]).is_file():
    973:  self._paths["driver_path"] = output["driver_path"]
    974:  else:
    975:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    976:  if Path(output["browser_path"]).is_file():
    977:  self._paths["browser_path"] = output["browser_path"]
    978:  else:
    979:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    980:  except Exception as err:
    981:  msg = f"Unable to obtain driver for {browser}"
    982:  >           raise NoSuchDriverException(msg) from err
    983:  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
    ...
    
    990:  browser = self._options.capabilities["browserName"]
    991:  try:
    992:  path = self._service.path
    993:  if path:
    994:  logger.debug(
    995:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    996:  )
    997:  if not Path(path).is_file():
    998:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1026:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1027:  SeleniumManager._process_logs(output["logs"])
    1028:  result = output["result"]
    1029:  if completed_proc.returncode:
    1030:  >           raise WebDriverException(
    1031:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1032:  )
    1033:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1034:  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': ''}
    ...
    
    1054:  browser = self._options.capabilities["browserName"]
    1055:  try:
    1056:  path = self._service.path
    1057:  if path:
    1058:  logger.debug(
    1059:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1060:  )
    1061:  if not Path(path).is_file():
    1062:  raise ValueError(f"The path is not a valid file: {path}")
    1063:  self._paths["driver_path"] = path
    1064:  else:
    1065:  output = SeleniumManager().binary_paths(self._to_args())
    1066:  if Path(output["driver_path"]).is_file():
    1067:  self._paths["driver_path"] = output["driver_path"]
    1068:  else:
    1069:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1070:  if Path(output["browser_path"]).is_file():
    1071:  self._paths["browser_path"] = output["browser_path"]
    1072:  else:
    1073:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1074:  except Exception as err:
    1075:  msg = f"Unable to obtain driver for {browser}"
    1076:  >           raise NoSuchDriverException(msg) from err
    1077:  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
    ...
    
    1084:  browser = self._options.capabilities["browserName"]
    1085:  try:
    1086:  path = self._service.path
    1087:  if path:
    1088:  logger.debug(
    1089:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1090:  )
    1091:  if not Path(path).is_file():
    1092:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1120:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1121:  SeleniumManager._process_logs(output["logs"])
    1122:  result = output["result"]
    1123:  if completed_proc.returncode:
    1124:  >           raise WebDriverException(
    1125:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1126:  )
    1127:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1128:  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': ''}
    ...
    
    1148:  browser = self._options.capabilities["browserName"]
    1149:  try:
    1150:  path = self._service.path
    1151:  if path:
    1152:  logger.debug(
    1153:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1154:  )
    1155:  if not Path(path).is_file():
    1156:  raise ValueError(f"The path is not a valid file: {path}")
    1157:  self._paths["driver_path"] = path
    1158:  else:
    1159:  output = SeleniumManager().binary_paths(self._to_args())
    1160:  if Path(output["driver_path"]).is_file():
    1161:  self._paths["driver_path"] = output["driver_path"]
    1162:  else:
    1163:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1164:  if Path(output["browser_path"]).is_file():
    1165:  self._paths["browser_path"] = output["browser_path"]
    1166:  else:
    1167:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1168:  except Exception as err:
    1169:  msg = f"Unable to obtain driver for {browser}"
    1170:  >           raise NoSuchDriverException(msg) from err
    1171:  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
    ...
    
    1178:  browser = self._options.capabilities["browserName"]
    1179:  try:
    1180:  path = self._service.path
    1181:  if path:
    1182:  logger.debug(
    1183:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1184:  )
    1185:  if not Path(path).is_file():
    1186:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1214:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1215:  SeleniumManager._process_logs(output["logs"])
    1216:  result = output["result"]
    1217:  if completed_proc.returncode:
    1218:  >           raise WebDriverException(
    1219:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1220:  )
    1221:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1222:  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': ''}
    ...
    
    1242:  browser = self._options.capabilities["browserName"]
    1243:  try:
    1244:  path = self._service.path
    1245:  if path:
    1246:  logger.debug(
    1247:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1248:  )
    1249:  if not Path(path).is_file():
    1250:  raise ValueError(f"The path is not a valid file: {path}")
    1251:  self._paths["driver_path"] = path
    1252:  else:
    1253:  output = SeleniumManager().binary_paths(self._to_args())
    1254:  if Path(output["driver_path"]).is_file():
    1255:  self._paths["driver_path"] = output["driver_path"]
    1256:  else:
    1257:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1258:  if Path(output["browser_path"]).is_file():
    1259:  self._paths["browser_path"] = output["browser_path"]
    1260:  else:
    1261:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1262:  except Exception as err:
    1263:  msg = f"Unable to obtain driver for {browser}"
    1264:  >           raise NoSuchDriverException(msg) from err
    1265:  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
    ...
    
    1272:  browser = self._options.capabilities["browserName"]
    1273:  try:
    1274:  path = self._service.path
    1275:  if path:
    1276:  logger.debug(
    1277:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1278:  )
    1279:  if not Path(path).is_file():
    1280:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1308:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1309:  SeleniumManager._process_logs(output["logs"])
    1310:  result = output["result"]
    1311:  if completed_proc.returncode:
    1312:  >           raise WebDriverException(
    1313:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1314:  )
    1315:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1316:  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': ''}
    ...
    
    1336:  browser = self._options.capabilities["browserName"]
    1337:  try:
    1338:  path = self._service.path
    1339:  if path:
    1340:  logger.debug(
    1341:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1342:  )
    1343:  if not Path(path).is_file():
    1344:  raise ValueError(f"The path is not a valid file: {path}")
    1345:  self._paths["driver_path"] = path
    1346:  else:
    1347:  output = SeleniumManager().binary_paths(self._to_args())
    1348:  if Path(output["driver_path"]).is_file():
    1349:  self._paths["driver_path"] = output["driver_path"]
    1350:  else:
    1351:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1352:  if Path(output["browser_path"]).is_file():
    1353:  self._paths["browser_path"] = output["browser_path"]
    1354:  else:
    1355:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1356:  except Exception as err:
    1357:  msg = f"Unable to obtain driver for {browser}"
    1358:  >           raise NoSuchDriverException(msg) from err
    1359:  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
    ...
    
    1366:  browser = self._options.capabilities["browserName"]
    1367:  try:
    1368:  path = self._service.path
    1369:  if path:
    1370:  logger.debug(
    1371:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1372:  )
    1373:  if not Path(path).is_file():
    1374:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1402:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1403:  SeleniumManager._process_logs(output["logs"])
    1404:  result = output["result"]
    1405:  if completed_proc.returncode:
    1406:  >           raise WebDriverException(
    1407:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1408:  )
    1409:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1410:  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': ''}
    ...
    
    1430:  browser = self._options.capabilities["browserName"]
    1431:  try:
    1432:  path = self._service.path
    1433:  if path:
    1434:  logger.debug(
    1435:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1436:  )
    1437:  if not Path(path).is_file():
    1438:  raise ValueError(f"The path is not a valid file: {path}")
    1439:  self._paths["driver_path"] = path
    1440:  else:
    1441:  output = SeleniumManager().binary_paths(self._to_args())
    1442:  if Path(output["driver_path"]).is_file():
    1443:  self._paths["driver_path"] = output["driver_path"]
    1444:  else:
    1445:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1446:  if Path(output["browser_path"]).is_file():
    1447:  self._paths["browser_path"] = output["browser_path"]
    1448:  else:
    1449:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1450:  except Exception as err:
    1451:  msg = f"Unable to obtain driver for {browser}"
    1452:  >           raise NoSuchDriverException(msg) from err
    1453:  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
    ...
    
    1460:  browser = self._options.capabilities["browserName"]
    1461:  try:
    1462:  path = self._service.path
    1463:  if path:
    1464:  logger.debug(
    1465:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1466:  )
    1467:  if not Path(path).is_file():
    1468:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1496:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1497:  SeleniumManager._process_logs(output["logs"])
    1498:  result = output["result"]
    1499:  if completed_proc.returncode:
    1500:  >           raise WebDriverException(
    1501:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1502:  )
    1503:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1504:  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': ''}
    ...
    
    1522:  browser = self._options.capabilities["browserName"]
    1523:  try:
    1524:  path = self._service.path
    1525:  if path:
    1526:  logger.debug(
    1527:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1528:  )
    1529:  if not Path(path).is_file():
    1530:  raise ValueError(f"The path is not a valid file: {path}")
    1531:  self._paths["driver_path"] = path
    1532:  else:
    1533:  output = SeleniumManager().binary_paths(self._to_args())
    1534:  if Path(output["driver_path"]).is_file():
    1535:  self._paths["driver_path"] = output["driver_path"]
    1536:  else:
    1537:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1538:  if Path(output["browser_path"]).is_file():
    1539:  self._paths["browser_path"] = output["browser_path"]
    1540:  else:
    1541:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1542:  except Exception as err:
    1543:  msg = f"Unable to obtain driver for {browser}"
    1544:  >           raise NoSuchDriverException(msg) from err
    1545:  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
    ...
    
    1552:  browser = self._options.capabilities["browserName"]
    1553:  try:
    1554:  path = self._service.path
    1555:  if path:
    1556:  logger.debug(
    1557:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1558:  )
    1559:  if not Path(path).is_file():
    1560:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1588:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1589:  SeleniumManager._process_logs(output["logs"])
    1590:  result = output["result"]
    1591:  if completed_proc.returncode:
    1592:  >           raise WebDriverException(
    1593:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1594:  )
    1595:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1596:  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': ''}
    ...
    
    1614:  browser = self._options.capabilities["browserName"]
    1615:  try:
    1616:  path = self._service.path
    1617:  if path:
    1618:  logger.debug(
    1619:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1620:  )
    1621:  if not Path(path).is_file():
    1622:  raise ValueError(f"The path is not a valid file: {path}")
    1623:  self._paths["driver_path"] = path
    1624:  else:
    1625:  output = SeleniumManager().binary_paths(self._to_args())
    1626:  if Path(output["driver_path"]).is_file():
    1627:  self._paths["driver_path"] = output["driver_path"]
    1628:  else:
    1629:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1630:  if Path(output["browser_path"]).is_file():
    1631:  self._paths["browser_path"] = output["browser_path"]
    1632:  else:
    1633:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1634:  except Exception as err:
    1635:  msg = f"Unable to obtain driver for {browser}"
    1636:  >           raise NoSuchDriverException(msg) from err
    1637:  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
    ...
    
    1644:  browser = self._options.capabilities["browserName"]
    1645:  try:
    1646:  path = self._service.path
    1647:  if path:
    1648:  logger.debug(
    1649:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1650:  )
    1651:  if not Path(path).is_file():
    1652:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1680:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1681:  SeleniumManager._process_logs(output["logs"])
    1682:  result = output["result"]
    1683:  if completed_proc.returncode:
    1684:  >           raise WebDriverException(
    1685:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1686:  )
    1687:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1688:  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': ''}
    ...
    
    1706:  browser = self._options.capabilities["browserName"]
    1707:  try:
    1708:  path = self._service.path
    1709:  if path:
    1710:  logger.debug(
    1711:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1712:  )
    1713:  if not Path(path).is_file():
    1714:  raise ValueError(f"The path is not a valid file: {path}")
    1715:  self._paths["driver_path"] = path
    1716:  else:
    1717:  output = SeleniumManager().binary_paths(self._to_args())
    1718:  if Path(output["driver_path"]).is_file():
    1719:  self._paths["driver_path"] = output["driver_path"]
    1720:  else:
    1721:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1722:  if Path(output["browser_path"]).is_file():
    1723:  self._paths["browser_path"] = output["browser_path"]
    1724:  else:
    1725:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1726:  except Exception as err:
    1727:  msg = f"Unable to obtain driver for {browser}"
    1728:  >           raise NoSuchDriverException(msg) from err
    1729:  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
    ...
    
    1736:  browser = self._options.capabilities["browserName"]
    1737:  try:
    1738:  path = self._service.path
    1739:  if path:
    1740:  logger.debug(
    1741:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1742:  )
    1743:  if not Path(path).is_file():
    1744:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1772:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1773:  SeleniumManager._process_logs(output["logs"])
    1774:  result = output["result"]
    1775:  if completed_proc.returncode:
    1776:  >           raise WebDriverException(
    1777:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1778:  )
    1779:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    1780:  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': ''}
    ...
    
    1798:  browser = self._options.capabilities["browserName"]
    1799:  try:
    1800:  path = self._service.path
    1801:  if path:
    1802:  logger.debug(
    1803:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1804:  )
    1805:  if not Path(path).is_file():
    1806:  raise ValueError(f"The path is not a valid file: {path}")
    1807:  self._paths["driver_path"] = path
    1808:  else:
    1809:  output = SeleniumManager().binary_paths(self._to_args())
    1810:  if Path(output["driver_path"]).is_file():
    1811:  self._paths["driver_path"] = output["driver_path"]
    1812:  else:
    1813:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1814:  if Path(output["browser_path"]).is_file():
    1815:  self._paths["browser_path"] = output["browser_path"]
    1816:  else:
    1817:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1818:  except Exception as err:
    1819:  msg = f"Unable to obtain driver for {browser}"
    1820:  >           raise NoSuchDriverException(msg) from err
    1821:  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
    ...
    
    1830:  tests/bidi/test_bidi_logging.py:30
    1831:  /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
    1832:  @pytest.mark.driver_type("bidi")
    1833:  tests/bidi/test_bidi_logging.py:42
    1834:  /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
    1835:  @pytest.mark.driver_type("bidi")
    1836:  -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
    1837:  =========================== short test summary info ============================
    1838:  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
    1839:  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
    1840:  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
    1841:  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
    1842:  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
    1843:  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
    1844:  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
    1845:  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
    1846:  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
    1847:  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
    1848:  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
    1849:  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
    1850:  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
    1851:  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
    1852:  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
    1853:  ERROR tests/browsers/test_edge.py::test_log_to_file - FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250103_054516.log'
    1854:  ERROR tests/browsers/test_edge.py::test_log_level - FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250103_054517.log'
    1855:  ERROR tests/browsers/test_edge.py::test_log_features - FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250103_054517.log'
    1856:  ERROR tests/browsers/test_edge.py::test_build_checks - FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250103_054517.log'
    1857:  = 14 failed, 131 passed, 15 skipped, 4 warnings, 5 errors, 47 rerun in 254.55s (0:04:14) =
    1858:  ##[warning]Attempt 1 failed. Reason: Child_process exited with error code 1
    ...
    
    1887:  tests/elements/test_locators.py ........                                 [ 81%]
    1888:  tests/interactions/test_alerts.py ...                                    [ 83%]
    1889:  tests/interactions/test_print_options.py .......                         [ 87%]
    1890:  tests/interactions/test_prints_page.py .                                 [ 88%]
    1891:  tests/interactions/test_virtual_authenticator.py ..........              [ 94%]
    1892:  tests/support/test_select_list.py ...                                    [ 96%]
    1893:  tests/troubleshooting/test_logging.py .                                  [ 96%]
    1894:  tests/waits/test_waits.py .....                                          [100%]
    1895:  ==================================== ERRORS ====================================
    1896:  _________________ ERROR at setup of test_set_browser_location __________________
    ...
    
    1901:  browser = self._options.capabilities["browserName"]
    1902:  try:
    1903:  path = self._service.path
    1904:  if path:
    1905:  logger.debug(
    1906:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1907:  )
    1908:  if not Path(path).is_file():
    1909:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    1937:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    1938:  SeleniumManager._process_logs(output["logs"])
    1939:  result = output["result"]
    1940:  if completed_proc.returncode:
    1941:  >           raise WebDriverException(
    1942:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    1943:  )
    1944:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --browser-version stable --language-binding python --output json; code: 65
    1945:  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': ''}
    ...
    
    1963:  browser = self._options.capabilities["browserName"]
    1964:  try:
    1965:  path = self._service.path
    1966:  if path:
    1967:  logger.debug(
    1968:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    1969:  )
    1970:  if not Path(path).is_file():
    1971:  raise ValueError(f"The path is not a valid file: {path}")
    1972:  self._paths["driver_path"] = path
    1973:  else:
    1974:  output = SeleniumManager().binary_paths(self._to_args())
    1975:  if Path(output["driver_path"]).is_file():
    1976:  self._paths["driver_path"] = output["driver_path"]
    1977:  else:
    1978:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    1979:  if Path(output["browser_path"]).is_file():
    1980:  self._paths["browser_path"] = output["browser_path"]
    1981:  else:
    1982:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    1983:  except Exception as err:
    1984:  msg = f"Unable to obtain driver for {browser}"
    1985:  >           raise NoSuchDriverException(msg) from err
    1986:  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
    1987:  /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/driver_finder.py:78: NoSuchDriverException
    1988:  ____________________ ERROR at teardown of test_log_to_file _____________________
    ...
    
    1991:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    1992:  log_path = 'log_file_' + suffix + '.log'
    1993:  yield log_path
    1994:  logger = logging.getLogger('selenium')
    1995:  for handler in logger.handlers:
    1996:  logger.removeHandler(handler)
    1997:  handler.close()
    1998:  >       os.remove(log_path)
    1999:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250103_054934.log'
    2000:  tests/conftest.py:102: FileNotFoundError
    2001:  _____________________ ERROR at teardown of test_log_level ______________________
    ...
    
    2004:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    2005:  log_path = 'log_file_' + suffix + '.log'
    2006:  yield log_path
    2007:  logger = logging.getLogger('selenium')
    2008:  for handler in logger.handlers:
    2009:  logger.removeHandler(handler)
    2010:  handler.close()
    2011:  >       os.remove(log_path)
    2012:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250103_054935.log'
    2013:  tests/conftest.py:102: FileNotFoundError
    2014:  ____________________ ERROR at teardown of test_log_features ____________________
    ...
    
    2017:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    2018:  log_path = 'log_file_' + suffix + '.log'
    2019:  yield log_path
    2020:  logger = logging.getLogger('selenium')
    2021:  for handler in logger.handlers:
    2022:  logger.removeHandler(handler)
    2023:  handler.close()
    2024:  >       os.remove(log_path)
    2025:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250103_054935.log'
    2026:  tests/conftest.py:102: FileNotFoundError
    2027:  ____________________ ERROR at teardown of test_build_checks ____________________
    ...
    
    2030:  suffix = datetime.now().strftime("%y%m%d_%H%M%S")
    2031:  log_path = 'log_file_' + suffix + '.log'
    2032:  yield log_path
    2033:  logger = logging.getLogger('selenium')
    2034:  for handler in logger.handlers:
    2035:  logger.removeHandler(handler)
    2036:  handler.close()
    2037:  >       os.remove(log_path)
    2038:  E       FileNotFoundError: [Errno 2] No such file or directory: 'log_file_250103_054935.log'
    2039:  tests/conftest.py:102: FileNotFoundError
    2040:  =================================== FAILURES ===================================
    ...
    
    2046:  browser = self._options.capabilities["browserName"]
    2047:  try:
    2048:  path = self._service.path
    2049:  if path:
    2050:  logger.debug(
    2051:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2052:  )
    2053:  if not Path(path).is_file():
    2054:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    2082:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    2083:  SeleniumManager._process_logs(output["logs"])
    2084:  result = output["result"]
    2085:  if completed_proc.returncode:
    2086:  >           raise WebDriverException(
    2087:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    2088:  )
    2089:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    2090:  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': ''}
    ...
    
    2109:  browser = self._options.capabilities["browserName"]
    2110:  try:
    2111:  path = self._service.path
    2112:  if path:
    2113:  logger.debug(
    2114:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2115:  )
    2116:  if not Path(path).is_file():
    2117:  raise ValueError(f"The path is not a valid file: {path}")
    2118:  self._paths["driver_path"] = path
    2119:  else:
    2120:  output = SeleniumManager().binary_paths(self._to_args())
    2121:  if Path(output["driver_path"]).is_file():
    2122:  self._paths["driver_path"] = output["driver_path"]
    2123:  else:
    2124:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    2125:  if Path(output["browser_path"]).is_file():
    2126:  self._paths["browser_path"] = output["browser_path"]
    2127:  else:
    2128:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    2129:  except Exception as err:
    2130:  msg = f"Unable to obtain driver for {browser}"
    2131:  >           raise NoSuchDriverException(msg) from err
    2132:  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
    ...
    
    2139:  browser = self._options.capabilities["browserName"]
    2140:  try:
    2141:  path = self._service.path
    2142:  if path:
    2143:  logger.debug(
    2144:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2145:  )
    2146:  if not Path(path).is_file():
    2147:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    2175:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    2176:  SeleniumManager._process_logs(output["logs"])
    2177:  result = output["result"]
    2178:  if completed_proc.returncode:
    2179:  >           raise WebDriverException(
    2180:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    2181:  )
    2182:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    2183:  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': ''}
    ...
    
    2203:  browser = self._options.capabilities["browserName"]
    2204:  try:
    2205:  path = self._service.path
    2206:  if path:
    2207:  logger.debug(
    2208:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2209:  )
    2210:  if not Path(path).is_file():
    2211:  raise ValueError(f"The path is not a valid file: {path}")
    2212:  self._paths["driver_path"] = path
    2213:  else:
    2214:  output = SeleniumManager().binary_paths(self._to_args())
    2215:  if Path(output["driver_path"]).is_file():
    2216:  self._paths["driver_path"] = output["driver_path"]
    2217:  else:
    2218:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    2219:  if Path(output["browser_path"]).is_file():
    2220:  self._paths["browser_path"] = output["browser_path"]
    2221:  else:
    2222:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    2223:  except Exception as err:
    2224:  msg = f"Unable to obtain driver for {browser}"
    2225:  >           raise NoSuchDriverException(msg) from err
    2226:  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
    ...
    
    2233:  browser = self._options.capabilities["browserName"]
    2234:  try:
    2235:  path = self._service.path
    2236:  if path:
    2237:  logger.debug(
    2238:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2239:  )
    2240:  if not Path(path).is_file():
    2241:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    2269:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    2270:  SeleniumManager._process_logs(output["logs"])
    2271:  result = output["result"]
    2272:  if completed_proc.returncode:
    2273:  >           raise WebDriverException(
    2274:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    2275:  )
    2276:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    2277:  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': ''}
    ...
    
    2298:  browser = self._options.capabilities["browserName"]
    2299:  try:
    2300:  path = self._service.path
    2301:  if path:
    2302:  logger.debug(
    2303:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2304:  )
    2305:  if not Path(path).is_file():
    2306:  raise ValueError(f"The path is not a valid file: {path}")
    2307:  self._paths["driver_path"] = path
    2308:  else:
    2309:  output = SeleniumManager().binary_paths(self._to_args())
    2310:  if Path(output["driver_path"]).is_file():
    2311:  self._paths["driver_path"] = output["driver_path"]
    2312:  else:
    2313:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    2314:  if Path(output["browser_path"]).is_file():
    2315:  self._paths["browser_path"] = output["browser_path"]
    2316:  else:
    2317:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    2318:  except Exception as err:
    2319:  msg = f"Unable to obtain driver for {browser}"
    2320:  >           raise NoSuchDriverException(msg) from err
    2321:  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
    ...
    
    2328:  browser = self._options.capabilities["browserName"]
    2329:  try:
    2330:  path = self._service.path
    2331:  if path:
    2332:  logger.debug(
    2333:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2334:  )
    2335:  if not Path(path).is_file():
    2336:  raise ValueError(f"The path is not a valid file: {path}")
    ...
    
    2364:  raise WebDriverException(f"Unsuccessful command executed: {command}") from err
    2365:  SeleniumManager._process_logs(output["logs"])
    2366:  result = output["result"]
    2367:  if completed_proc.returncode:
    2368:  >           raise WebDriverException(
    2369:  f"Unsuccessful command executed: {command}; code: {completed_proc.returncode}\n{result}\n{stderr}"
    2370:  )
    2371:  E           selenium.common.exceptions.WebDriverException: Message: Unsuccessful command executed: /Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/site-packages/selenium/webdriver/common/macos/selenium-manager --browser MicrosoftEdge --language-binding python --output json; code: 65
    2372:  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': ''}
    ...
    
    2392:  browser = self._options.capabilities["browserName"]
    2393:  try:
    2394:  path = self._service.path
    2395:  if path:
    2396:  logger.debug(
    2397:  "Skipping Selenium Manager; path to %s driver specified in Service class: %s", browser, path
    2398:  )
    2399:  if not Path(path).is_file():
    2400:  raise ValueError(f"The path is not a valid file: {path}")
    2401:  self._paths["driver_path"] = path
    2402:  else:
    2403:  output = SeleniumManager().binary_paths(self._to_args())
    2404:  if Path(output["driver_path"]).is_file():
    2405:  self._paths["driver_path"] = output["driver_path"]
    2406:  else:
    2407:  raise ValueError(f'The driver path is not a valid file: {output["driver_path"]}')
    2408:  if Path(output["browser_path"]).is_file():
    2409:  self._paths["browser_path"] = output["browser_path"]
    2410:  else:
    2411:  raise ValueError(f'The browser path is not a valid file: {output["browser_path"]}')
    2412:  except Exception as err:
    2413:  msg = f"Unable to obtain driver for {browser}"
    2414:  >           raise NoSuchDriverException(msg) from err
    2415:  E           selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge; For documentation on this error, please visit: https://www.selenium.de...

    Copy link

    netlify bot commented Dec 28, 2024

    Deploy Preview for selenium-dev ready!

    Name Link
    🔨 Latest commit 0c1b77e
    🔍 Latest deploy log https://app.netlify.com/sites/selenium-dev/deploys/677775ec3043530008bc63f3
    😎 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.

    Copy link
    Contributor Author

    renovate bot commented Jan 3, 2025

    Edited/Blocked Notification

    Renovate will not automatically rebase this PR, because it does not recognize the last commit author and assumes somebody else may have edited the PR.

    You can manually request rebase by checking the rebase/retry box above.

    ⚠️ Warning: custom changes will be lost.

    Copy link
    Member

    @VietND96 VietND96 left a comment

    Choose a reason for hiding this comment

    The reason will be displayed to describe this comment to others. Learn more.

    Merge when py3.8 is dropped in CI test

    @harsha509
    Copy link
    Member

    Thank you @VietND96 for the info.
    Closing this until Selenium drops support of py3.8!

    @harsha509 harsha509 closed this Jan 8, 2025
    Copy link
    Contributor Author

    renovate bot commented Jan 8, 2025

    Renovate Ignore Notification

    Because you closed this PR without merging, Renovate will ignore this update (==0.28.0). You will get a PR once a newer version is released. To ignore this dependency forever, add it to the ignoreDeps array of your Renovate config.

    If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

    @renovate renovate bot deleted the renovate/trio-0.x branch January 8, 2025 06:13
    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.

    2 participants