Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium创建多个浏览器会话_Python_Selenium_Webdriver - Fatal编程技术网

Python Selenium创建多个浏览器会话

Python Selenium创建多个浏览器会话,python,selenium,webdriver,Python,Selenium,Webdriver,我想创建多个浏览器会话并使用不同的帐户登录。如果我使用下面的代码,它将生成我想要的,但在for循环结束后关闭所有浏览器。我的猜测是,python会在焦点消失后结束所有进程。我怎样才能解决这个问题?使用多线程? 我希望每节课都能持续60秒 def playroutine(): index = 0 for i in range(len(getlogindata())): username, password = givemelogin(index) i

我想创建多个浏览器会话并使用不同的帐户登录。如果我使用下面的代码,它将生成我想要的,但在for循环结束后关闭所有浏览器。我的猜测是,python会在焦点消失后结束所有进程。我怎样才能解决这个问题?使用多线程? 我希望每节课都能持续60秒

def playroutine():
    index = 0
    for i in range(len(getlogindata())):
        username, password = givemelogin(index)
        index += 1
        driver = webdriver.Chrome('/Users/fb/Documents/chromedriver')  # Optional argument, if not specified will search path.
        driver.get('[...]')
        driver.find_element_by_name("username").send_keys(username)
        driver.find_element_by_name("password").send_keys(password)
        driver.find_element_by_id("login-button").click()
        time.sleep(2)
        driver.get('[...]')

谢谢:)

循环结束后,您不能关闭所有的浏览器,因为
驱动程序
变量只存在于
for
循环的上下文中

但是,您可以一次关闭一个循环中的驱动程序:

def playroutine():
    index = 0
    for i in range(len(getlogindata())):
        username, password = givemelogin(index)
        index += 1
        driver = webdriver.Chrome('/Users/fb/Documents/chromedriver')  # Optional argument, if not specified will search path.
        driver.get('[...]')
        driver.find_element_by_name("username").send_keys(username)
        driver.find_element_by_name("password").send_keys(password)
        driver.find_element_by_id("login-button").click()
        time.sleep(2)

        # close the driver
        driver.close()
        driver.quit()
或者,您可以在一个列表中跟踪驱动程序,并尝试通过它们循环并关闭它们--这有点不太成熟,我不能说我会推荐它:

def playroutine():

    driver_list = []
    index = 0
    for i in range(len(getlogindata())):
        username, password = givemelogin(index)
        index += 1
        driver = webdriver.Chrome('/Users/fb/Documents/chromedriver')  # Optional argument, if not specified will search path.

        # add this driver to your list to keep track of it
        driver_list.append(driver)

        driver.get('[...]')
        driver.find_element_by_name("username").send_keys(username)
        driver.find_element_by_name("password").send_keys(password)
        driver.find_element_by_id("login-button").click()
        time.sleep(2)
        driver.get('[...]')

    # for loop is finished -- close all drivers
    for driver in driver_list:
        driver.close()
        driver.quit()

每个驱动程序都需要一个单独的对象,不是吗?您正在创建所有的驱动程序。