Не работает проверка на существование элемента Selenium Python, как я могу это исправить?

У меня есть функция которая проверяет наличие элемента на странице

def demo_exist(browser):
    try:
        browser.switch_to.default_content()
        game_cards = browser.find_elements(By.CLASS_NAME, "game-card__play-buttons")
        #Выбираем одну карту
        card = game_cards[1]
        a = card.find_elements(By.CLASS_NAME, "btn.game-card__btn.game-card__demo-btn")
        print("Количество элементов", len(a))
        if(len(a)>0):
            return True
        else: return False
    except Exception as e: 
        return False

Она служит триггером для выхода из цикла

while True:
     choise_provider(browser)
        if(demo_exist(browser)): 
            demo_button = get_demo_button(browser)
            break

На моменте первого выполнения функции demo_exist, тест зависает на строчке

a = card.find_elements(By.CLASS_NAME, "btn.game-card__btn.game-card__demo-btn")

При остановке теста по CTR + C выдает следующую ошибку


Traceback (most recent call last):
  File "D:\softmoi\python\Lib\http\client.py", line 1378, in getresponse
    response.begin()
  File "D:\softmoi\python\Lib\http\client.py", line 318, in begin
    version, status, reason = self._read_status()
                              ^^^^^^^^^^^^^^^^^^^
  File "D:\softmoi\python\Lib\http\client.py", line 279, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\softmoi\python\Lib\socket.py", line 706, in readinto
    return self._sock.recv_into(b)
           ^^^^^^^^^^^^^^^^^^^^^^^
ConnectionResetError: [WinError 10054] Удаленный хост принудительно разорвал существующее подключение

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "d:\User\Documents\automate testing\game_search_and_run\Provider.v2By_demobutton.py", line 86, in <module>
    if(demo_exist(browser)):
       ^^^^^^^^^^^^^^^^^^^
  File "d:\User\Documents\automate testing\game_search_and_run\Provider.v2By_demobutton.py", line 29, in demo_exist
    a = card.find_elements(By.CLASS_NAME, "btn.game-card__btn.game-card__demo-btn")
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\selenium\webdriver\remote\webelement.py", line 438, in find_elements
    return self._execute(Command.FIND_CHILD_ELEMENTS, {"using": by, "value": value})["value"]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\selenium\webdriver\remote\webelement.py", line 394, in _execute
    return self._parent.execute(command, params)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\selenium\webdriver\remote\webdriver.py", line 345, in execute
    response = self.command_executor.execute(driver_command, params)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\selenium\webdriver\remote\remote_connection.py", line 300, in execute
    return self._request(command_info[0], url, body=data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\selenium\webdriver\remote\remote_connection.py", line 321, in _request
    response = self._conn.request(method, url, body=body, headers=headers)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\urllib3\_request_methods.py", line 118, in request
    return self.request_encode_body(
           ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\urllib3\_request_methods.py", line 217, in request_encode_body
    return self.urlopen(method, url, **extra_kw)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\urllib3\poolmanager.py", line 443, in urlopen
    response = conn.urlopen(method, u.request_uri, **kw)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\urllib3\connectionpool.py", line 790, in urlopen
    response = self._make_request(
               ^^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\urllib3\connectionpool.py", line 536, in _make_request
    response = conn.getresponse()
               ^^^^^^^^^^^^^^^^^^
  File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\urllib3\connection.py", line 461, in getresponse
    httplib_response = super().getresponse()
                       ^^^^^^^^^^^^^^^^^^^^^
  File "D:\softmoi\python\Lib\http\client.py", line 1380, in getresponse
    self.close()
  File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\urllib3\connection.py", line 270, in close
    def close(self) -> None:

Надеюсь на вашу помощь, заранее извиняюсь если не правильно оформил пост.


Ответы (0 шт):