StaleElementException на Селен Loop - PullRequest
0 голосов
/ 21 мая 2018

Я очищаю веб-сайт каталога для URL-адресов и получаю исключение StaleElementException, когда следующая кнопка больше не действует.Я пытаюсь выяснить, как предотвратить разрыв цикла.Я хотел бы выйти из цикла после получения остальных элементов и когда больше нет следующей кнопки.

with open(provider + '-' + state + '-' + city + '-links.csv', 'w', newline='') as file:
    writer = csv.writer(file)
    idx = 1
    while next_page is not None:
        for company in company_links_elements:
            company_url = company.get_attribute("href")
            writer.writerow((idx, company_url, provider))
            idx += 1
        time.sleep(random.randint(2, 3))
        next_page.click()
        # Get next page elements
        company_links_elements = driver.find_elements(By.XPATH,
                                                      "//h3[@class='jss320 jss324 jss337 sc-gzOgki eucExu']/a")
        company_address_elements = driver.find_elements(By.XPATH,
                                                        "//p/strong[@class='dtm-search-listing-address']")
        # Try getting the next page element
        try:
            next_page = driver.find_element(By.XPATH, "//a[@role='link'][contains(text(),'Next')]")
        except NoSuchElementException:
            break

driver.quit()

Это ошибка:

raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
  (Session info: chrome=66.0.3359.181)
  (Driver info: chromedriver=2.38.552522 (437e6fbedfa8762dec75e2c5b3ddb86763dc9dcb),platform=Windows NT 10.0.16299 x86_64)

Я пыталсякогда я загружаю новую страницу, включаю пробный тормоз, чтобы она не переключалась, если она не существует, но, похоже, это не работает.

1 Ответ

0 голосов
/ 21 мая 2018

Попробуйте добавить длительный сон / ожидание после next_page.click() для отладки, чтобы дождаться завершения обновления страницы после нажатия кнопки next page

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...