创建多个浏览器会话

2024-04-20 06:06:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建多个浏览器会话和登录不同的帐户。如果我使用下面的代码,它使我想要的,但关闭所有浏览器后,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('[...]')

谢谢:)


Tags: 代码namesendforgetindexbydriver
1条回答
网友
1楼 · 发布于 2024-04-20 06:06:08

循环结束后不能关闭所有浏览器,因为driver变量只存在于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()

相关问题 更多 >