繁体   English   中英

退出后如何重新启动Selenium浏览器?

[英]How to restart Selenium browser after quit?

我正在尝试退出,然后在遇到验证码时重新启动与 Selenium 的新浏览器会话,但我不确定为什么下面的代码不起作用。

它退出现有的驱动程序,但在递归之后browser.get()导致此错误: ConnectionRefusedError: [Errno 61] Connection refused

提前感谢您的任何建议。 我只包含了下面代码中最相关的部分:

from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.action_chains import ActionChains
path_to_chromedriver = '/Users/Myname/Desktop/a/chromedriver 2'

options = webdriver.ChromeOptions()
options.add_argument('start-maximized')
#options.add_argument('disable-infobars')
#options.add_argument('--disable-notifications')
options.add_argument('--disable-extensions')
browser = webdriver.Chrome(chrome_options=options, executable_path=path_to_chromedriver)
headers = {'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'}

def get_page_info(url, browser = webdriver.Chrome(chrome_options=options, executable_path=path_to_chromedriver)):
    browser.get(url)
    try:
        body = browser.find_element_by_tag_name('body')
        if "been denied because we believe" in body.text:
            print("going to new session...")
            browser.quit()
            human(4,6) #time delay
            return winery_info(url)

编辑:我通常不会使用这种策略来绕过验证码,但在我的用例中这是有道理的。

尝试使用 driver.delete_all_cookies() 方法而不是关闭浏览器并重新打开它

编辑:也许该站点阻止了您的 ip 地址,我建议您使用 Tor 自动更改 ip,我会给您这个

import os
import time

os.system("killall tor")
os.system("tor &")
time.sleep(5)

#init driver
fp = webdriver.FirefoxProfile()
fp.set_preference("network.proxy.type", 1)
fp.set_preference("network.proxy.socks", "127.0.0.1")
fp.set_preference("network.proxy.socks_port", int("9050"))
fp.update_preferences()
browser = webdriver.Firefox(firefox_profile=fp) 

browser.get(...)
...
...
if captcha:
    os.system("killall tor")
    os.system("tor &")
    time.sleep(5)
    browser.get(...)
    # this will change your ip adress
    # You can also configure tor to change ip every 10 seconds by changing torrc file

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM