【问题标题】:Close each webdriver that open every 30 sec using python selenium使用 python selenium 关闭每 30 秒打开的每个 webdriver
【发布时间】:2021-09-12 21:24:49
【问题描述】:

嘿,我想连续执行多个浏览器,但是当每个浏览器打开时,每个浏览器应该每 30 秒关闭一次

import time
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager


with open('configure.txt','r') as f:
  config = f.readlines()
  l= config[0].strip('\n').split('|')[1].strip(' ')
  print(l)
  # 2nd line
  t = config[1].strip('\n').split('|')[1].strip(' ')
  print(t)
with open('proxies.txt','r') as f:
i=f.readline()
def web():
  print(i)
  option.add_argument('--proxy-server=%s' % i)
  driver = webdriver.Chrome(ChromeDriverManager().install(), options=option)
  driver.execute_script(f'''window.open("{l}","_blank");''')
  time.sleep(2)
  driver.close()
  time.sleep(30)
  driver.quit()





 for i in range(0,5):
   web()

【问题讨论】:

    标签: python multithreading selenium selenium-webdriver webdriver


    【解决方案1】:

    您绝对可以为此使用多线程,但我建议您至少查看asyncio。而不是手动生成线程并 wait()'ing 让它们完成。您可以在事件循环上安排事件。下面是一个小代码示例来说明您的用例。

    from selenium import webdriver
    from webdriver_manager.chrome import ChromeDriverManager
    import asyncio
    import random
    
    
    async def open_and_close():
        driver = webdriver.Chrome(ChromeDriverManager().install())
        driver.execute_script(f"""window.open("{"http://google.com"}","_blank");""")
        await asyncio.sleep(2)
        driver.close()
        await asyncio.sleep(random.randint(0, 10))
        driver.quit()
    
    
    async def main():
        # Schedule multiple browser actions *concurrently*:
        funcs = [open_and_close() for i in range(5)]
    
        L = await asyncio.gather(*funcs)
    
    
    asyncio.run(main())
    

    【讨论】:

    • 感谢代码,但它在循环结束时工作,当浏览器在完成时间(10秒)时打开时是否有另一种解决方案,等等然后在循环中运行时关闭
    • 我不是 100% 确定您的意思,但您可以将此代码块放入循环中:python while True: funcs = [open_and_close() for i in range(5)] await asyncio.gather(*funcs)
    • 我的意思是你设置循环在这个循环中运行 5 次每个浏览器打开然后每个浏览器应该在 30 秒后关闭但浏览器在循环结束时关闭
    • 不是每个浏览器都在 30 秒后关闭,它们不会同时关闭。感觉可能是这样,因为所有浏览器都是同时启动的。如果您想对此进行测试,请尝试使用 random.randint(0, 30) 随机休眠几秒钟。
    • 不关闭所有浏览器在 30 岁之后同时关闭,当浏览器打开并且时间开始时它完成它的时间然后它应该关闭这就是我问你的事情
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2016-01-20
    • 1970-01-01
    • 2018-03-09
    相关资源
    最近更新 更多