【问题标题】:Selenium: Loop webdrivers (Python)Selenium:循环网络驱动程序(Python)
【发布时间】:2020-04-12 19:21:41
【问题描述】:

我想用 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() 关闭当前具有焦点的浏览器窗口,elsedriver.quit() 退出整个浏览器会话以及所有相关的浏览器窗口、选项卡和弹出窗口。
  • 看看我的回答,如果有帮助请告诉我

标签: python selenium loops selenium-webdriver


【解决方案1】:

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

driver.close() - 关闭焦点所在的浏览器窗口 设置好了。

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

您应该在想要结束程序时使用 driver.quit。它将关闭所有打开的浏览器窗口并终止 WebDriver 会话。

考虑以下列方式编写循环示例,这将更好地处理关闭实例。

使用multithreadingmultiprocessingsubprocess 模块并行(接近并行)触发任务。

多线程示例

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!'

在这里,一次生成 5 个浏览器来运行测试用例。为了演示的目的,我没有实现测试逻辑,而是将睡眠时间设置为 2 秒。该代码将启动 5 个 firefox 浏览器(使用 python 2.7 测试),打开 google 并等待 2 秒后退出。

日志:

C:\Python27\python.exe C:/Users/swadchan/Documents/TestPyCharm/stackoverflow/so49617485.py
Test 0 started!
Test 1 started!
Test 2 started!
Test 3 started!
Test 4 started!
Test completed!

Process finished with exit code 0

【讨论】:

  • 谢谢!您的回答正是我的问题的解决方案。
猜你喜欢
  • 2018-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多