MaxRetryError при скарпинге с селеном: происходит, когда я выхожу и перезапускаю браузер - PullRequest
0 голосов
/ 28 января 2020

Это фрагмент кода. Ошибка возникает в последнем блоке try-Кроме, где я пытаюсь выйти и перезапустить браузер в случае возникновения исключения TimeOut. Вот ошибка, которую я получаю:

MaxRetryError: HTTPConnectionPool (host = '127.0.0.1', port = 65067): превышено максимальное количество попыток с URL: / session / 819e6b641d55d1739500557218c88ce7 / url (вызвано NewConnectionEror ': Не удалось установить sh новое соединение: [WinError 10061] Невозможно установить соединение, поскольку целевая машина активно отказала ему в этом »))

Код:

def log_in(driver,uc_link,time_to_sleep):
            driver.get(uc_link)
            time.sleep(random.uniform(2,3))
            oldTab = driver.window_handles[0]
            driver.find_element_by_link_text("S&P Global NetAdvantage").click()
            time.sleep(time_to_sleep)
            """Change Focus to the new tab"""
            newTab = driver.window_handles[1]
            driver.switch_to_window(newTab)
            driver.switch_to_window(oldTab)
            driver.close()
            driver.switch_to_window(newTab)
            time.sleep(time_to_sleep)

# L oop

for num in range(start,end):
        print(num)
        b=len(name_found)
        try:
            if is_login(driver):
                log_in(driver,uc_link,5)
                try:
                    wait.until(driver.find_elements(By.ID, "ctl18_bottomBarLogo")) 
                except TimeoutException:
                    print("Log in taking too long")
                    driver.quit()
                    log_in(driver,uc_link,5)
            comp_name = fh['company1'][num]
            sp_comp = driver.find_element_by_id("SearchTopBar")
            sp_comp.clear()
            sp_comp.send_keys(comp_name)
            driver.find_element_by_xpath('//*[@id="ciqSearchSearchButton"]/input').click()
            try:
                wait.until(lambda driver: driver.find_elements(By.ID, "CompanyHeaderInfo_CompanyHeaderInfo_BinderToolbar") or driver.find_elements(By.ID, "dropdownContainer"))
            except TimeoutException:
                print("Time Out")
                driver.quit() #Here is where the problem occurs
                #driver.refresh()
                time.sleep(10)
                log_in(driver,uc_link,5)
                continue

1 Ответ

0 голосов
/ 28 января 2020

После завершения работы вы снова создаете экземпляр драйвера.

except TimeoutException:
                print("Time Out")
                driver.quit() #Here is where the problem occurs
                #driver.refresh()
                time.sleep(10)
                driver = webdriver.Chrome("C:\Path\To\Your\chromedriver.exe")
                log_in(driver,uc_link,5)
                continue

Пример автономного доступа:


from selenium import webdriver
import time

##############################
#### also inside the loop#####
############################## 
#log_in(driver, uc_link,5)
#actions = ActionChains(driver)
#wait = WebDriverWait(driver,30)
##############################
#### also inside the loop#####
##############################

for i in range(3):
    driver = webdriver.Chrome("C:\Path\To\chromedriver.exe")
    driver.get('https://www.google.com/')
    time.sleep(3)
    driver.quit()
    time.sleep(2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...