如何使用 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)
我想用一个驱动程序同时打开 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)