如何使用 webDriver (python) 在 chrome 中打开 20+ window

How to Open 20+ window in chrome using webDriver (python)

我想用一个驱动程序同时打开 20+ 或 10+ 个选项卡.. 如果我使用 for 循环.. 它只是打开但关闭了现有的和 idk 为什么我认为我有犯了一些错误.. 我想知道这些事情.. 1.打开不同Windows 2. 不应该崩溃 3.需要输入diff差异值

我的代码:

def start():
        options = webdriver.ChromeOptions()
        options.add_argument(
            "user-data-dir=C:\Users\rohit\AppData\Local\Google\Chrome\User Data\Default")
        options.add_experimental_option("useAutomationExtension", False)
        options.add_experimental_option(
            "excludeSwitches", ["enable-automation"])
        options.add_experimental_option('useAutomationExtension', False)
        options.add_argument("--disable-blink-features=AutomationControlled")
        # options.add_argument('--no-sandbox')
        options.add_argument('start-maximized')
        options.add_argument('--disable-infobars')
        # options.add_argument('--disable-dev-shm-usage')
        # options.add_argument('--disable-browser-side-navigation')
        options.add_argument("--remote-debugging-port=9222")
        options.add_argument('--disable-gpu')
        # options.add_argument("--disable-logging")
        options.add_argument("--log-level=3")
        #options.headless = True
        # to open 20 diff windows
        for i in range(20):
            driver = webdriver.Chrome()
                #executable_path=r'C:\Users\rohit\AppData\Local\Programs\Python\Python39\Scripts\chromedriver.exe', options=options)
            with open('file.txt') as k:
                accs = k.readlines()
                for line in accs:
                    unam, pwd, a, b,c,d,e,f,g,h,i,j,k,l = line.split(':')
                
        print('Vera Started')
        #driver = webdriver.Chrome(options=options)
        print('Driver Loaded')
        # unam = input('Username: ')
        # pwd = input('Password: ')
        scraper.login(driver, unam, pwd)
        ask = input('Enter 1 to continue: ')
        if ask == '1':
            # a = input('Enter First Name: ')
            # b = input('Enter Last Name: ')
            # c = input('Enter Middle Name: ')
            # d = input('Enter Suffix: ')
            # e = input('Enter Occupation: ')
            # f = input('Enter SSN: ')
            # g = input('Enter DOB: ')
            # h = input('Enter Steert Adress: ')
            # i = input('Enter Apartmenet NO: ')
            # j = input('Enter City: ')
            # k = input('Enter State: ')
            # l = input('Enter Zip: ')
            scraper.taxpayer(driver, a, b, c, d, e, f, g, h, i, j, k, l)

我希望我是对的,我希望没有错误 另外,即使我设置了日志级别 3,它仍然显示错误 需要修复这个 谢谢 请尽快回答我

使用多次 driver = webdriver.Chrome() 您尝试打开多个浏览器,而不是标签页。

您必须将每个浏览器分配给单独的变量,因为当您再次分配给同一个变量时,它会自动删除以前的浏览器。

all_drivers = []

for i in range(20):
    driver = webdriver.Chrome()

    all_drivers.append(driver)

    driver.get("https://books.toscrape.com/")

除了使用列表,您还可以访问所有浏览器 - all_drivers[0]all_drivers[1]

使用单个 driver 您只能访问上次打开的浏览器。


顺便说一句:当我 运行 和 Firefox() 时,即使我将新浏览器分配给同一个变量,它也会保持打开所有浏览器 - 但这样我就无法访问以前的浏览器。


如果您想打开标签页,您可以这样做

driver.switch_to.new_window('tab')
driver.get("https://books.toscrape.com/")

或使用JavaScript

driver.execute_script('window.open("https://books.toscrape.com/","_blank");')

要在选项卡之间切换,您可以获取当前选项卡的处理程序

tab_id = driver.current_window_handle

稍后使用它切换到此选项卡

driver.switch_to.window(tab_id)

如需更多选项卡,您可以将它们保留在列表中。

您应该还可以访问使用列表 driver.window_handles 的所有选项卡。

#print(len(driver.window_handles))
#print(driver.window_handles)

driver.switch_to.window(driver.window_handles[0])

文档:current_window_handle and window_handles


完整的工作代码:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
#from webdriver_manager.firefox import GeckoDriverManager
import time

driver = webdriver.Chrome(executable_path=ChromeDriverManager().install())
#driver = webdriver.Firefox(executable_path=ChromeDriverManager().install())

time.sleep(2)

driver.switch_to.new_window('tab')
driver.get("https://books.toscrape.com/")
tab1_id = driver.current_window_handle

time.sleep(2)

driver.switch_to.new_window('tab')
driver.get("https://quotes.toscrape.com/")
tab2_id = driver.current_window_handle

time.sleep(2)

driver.switch_to.window(tab1_id)

time.sleep(2)

driver.switch_to.window(tab2_id)

time.sleep(2)

driver.switch_to.window(tab1_id)