python - 我的类实例在遍历 for 循环时消失
问题描述
所以我试图同时打开一系列网络浏览器。当我调用单个类实例时,这样做没有问题(如果它是对象的实例,请纠正我)。我正在尝试使我的代码更漂亮,并通过 for 循环将 args 提供给实例。浏览器可以正常打开,但随后它们都消失了。有人告诉我这与垃圾收集有关,但不知道如何解决它。请帮忙。
from selenium import webdriver
from threading import Thread
class Dashboard(Thread):
def __init__(self, position, url):
super().__init__()
self.position = position
self.url = url
def run(self):
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--window-size=256,160')
#chrome_options.add_argument('--start-maximized')
chrome_options.add_argument(self.position)
self.driver = webdriver.Chrome(options=chrome_options)
self.driver.get(self.url)
pos = ['--window-position=100,100', '--window-position=1000,1000']
web = ['https://www.youtube.com', 'https://www.facebook.com']
for a, b in zip(pos, web):
screen = Dashboard(a, b).start()
解决方案
驱动程序超出范围导致浏览器关闭。将驱动程序添加到某个全局变量。
from selenium import webdriver
from threading import Thread
all_drivers = []
class Dashboard(Thread):
def __init__(self, position, url):
super().__init__()
self.position = position
self.url = url
self.driver = None
def run(self):
chrome_options = webdriver.ChromeOptions()
chrome_options.add_argument('--window-size=256,160')
# chrome_options.add_argument('--start-maximized')
chrome_options.add_argument(self.position)
self.driver = webdriver.Chrome(options=chrome_options)
self.driver.get(self.url)
all_drivers.append(self.driver)
pos = ['--window-position=100,100', '--window-position=1000,1000']
web = ['https://www.youtube.com', 'https://www.facebook.com']
for a, b in zip(pos, web):
screen = Dashboard(a, b).start()
# close the drivers once your purpose is solved
for driver in all_drivers:
driver.quit()
推荐阅读
- django - 在 macos 10.15 上安装 psycopg2 python 3.7 时出错
- spring-boot - 为什么在 Spring Boot 应用程序中使用 @Autowired 无法识别我自己的服务?
- asp.net-mvc - 我可以使用 json 序列化数据以发送到 Infragistics isgrid 而不是发送 IQueryable
目的? - c - 在 C 中扫描和打印字符时出现奇怪的代码交互
- python - 如何将机器学习模型序列化为 JSON 文件
- php - 由于潜在的速率限制问题,我是否应该缓存通过 API 调用获取的实时地理位置数据?
- arrays - 如何提高excel中数组函数的速度?
- core-data - UTF16 存储的字符串从 CoreData 检索回来后不匹配
- javascript - 在 JavaScript 中从整数构造新日期时检测无效日期值
- python - 转换字典列表,根据键组合列表项