Selenium:循环webdrivers(Python)

Selenium:循环webdrivers(Python),python,selenium,loops,selenium-webdriver,Python,Selenium,Loops,Selenium Webdriver,我想用selenium运行多个chrome实例。我试图循环webdrivers,但selenium一直关闭实例 代码如下: from selenium import webdriver user = str(input("Do you want to run this program? ")) amount = 0 if user == "yes": amount = int(input("How many instances do you want to run? "))

我想用selenium运行多个chrome实例。我试图循环webdrivers,但selenium一直关闭实例

代码如下:

from selenium import webdriver


user = str(input("Do you want to run this program? "))
amount = 0

if user == "yes":
    amount = int(input("How many instances do you want to run? "))
    for w in range(1, amount+1):
        webdriver.Chrome("path of my driver")
elif user == "no":
    print("Program is closing...")
else:
    print("Invalid input")
奇怪的是,如果我在没有循环的情况下编写实例,它们就不会关闭:

from selenium import webdriver


user = str(input("Do you want to run this program? "))

if user == "yes":
    driver1 = webdriver.Chrome("path of driver")
    driver2 = webdriver.Chrome("path of driver")
    driver3 = webdriver.Chrome("path of driver")
    driver4 = webdriver.Chrome("path of driver")
    driver5 = webdriver.Chrome("path of driver")
elif user == "no":
    print("Program is closing...")
else:
    print("Invalid input")

我的问题有什么解决方案吗?

要在编写实例时不使用循环关闭实例,请执行以下操作

driver.close()-它关闭浏览器窗口中的 一切就绪

driver.quit()–它基本上调用driver.dispose方法,然后调用driver.dispose方法 关闭所有浏览器窗口并结束WebDriver会话 优雅地

无论何时要结束程序,都应使用driver.quit。它将关闭所有打开的浏览器窗口并终止WebDriver会话

考虑用以下方式编写循环示例,这样可以更好地处理关闭实例的问题

使用
多线程
多处理
子进程
模块并行触发任务(接近并行)

多线程示例

from selenium import webdriver
import threading
import time


def test_logic():
    driver = webdriver.Firefox()
    url = 'https://www.google.co.in'
    driver.get(url)
    # Implement your test logic
    time.sleep(2)
    driver.quit()

N = 5   # Number of browsers to spawn
thread_list = list()

# Start test
for i in range(N):
    t = threading.Thread(name='Test {}'.format(i), target=test_logic)
    t.start()
    time.sleep(1)
    print t.name + ' started!'
    thread_list.append(t)

# Wait for all thre<ads to complete
for thread in thread_list:
    thread.join()

print 'Test completed!'

要在没有循环的情况下编写实例时关闭实例,请执行以下操作

driver.close()-它关闭浏览器窗口中的 一切就绪

driver.quit()–它基本上调用driver.dispose方法,然后调用driver.dispose方法 关闭所有浏览器窗口并结束WebDriver会话 优雅地

无论何时要结束程序,都应使用driver.quit。它将关闭所有打开的浏览器窗口并终止WebDriver会话

考虑用以下方式编写循环示例,这样可以更好地处理关闭实例的问题

使用
多线程
多处理
子进程
模块并行触发任务(接近并行)

多线程示例

from selenium import webdriver
import threading
import time


def test_logic():
    driver = webdriver.Firefox()
    url = 'https://www.google.co.in'
    driver.get(url)
    # Implement your test logic
    time.sleep(2)
    driver.quit()

N = 5   # Number of browsers to spawn
thread_list = list()

# Start test
for i in range(N):
    t = threading.Thread(name='Test {}'.format(i), target=test_logic)
    t.start()
    time.sleep(1)
    print t.name + ' started!'
    thread_list.append(t)

# Wait for all thre<ads to complete
for thread in thread_list:
    thread.join()

print 'Test completed!'

使用
driver.close()
关闭具有焦点的当前浏览器窗口,否则使用
driver.quit()
退出整个浏览器会话以及所有关联的浏览器窗口、选项卡和弹出窗口。请查看我的答案并告知我是否有帮助使用
driver.close()
关闭具有焦点的当前浏览器窗口,else
driver.quit()
退出整个浏览器会话以及所有相关的浏览器窗口、选项卡和弹出窗口。请查看我的答案,并告诉我是否有帮助谢谢!你的回答正好解决了我的问题。谢谢!你的回答正好解决了我的问题。