Python 3.x 如何分配每个浏览器任务,使其具有自己随机生成的ID,以便我可以随时访问它?
我想知道如何为我打开的每个浏览器窗口分配ID,这样我就可以跟踪它,也许以后可以访问它。我目前正在使用For循环来创建每个浏览器,但在此过程中,我想为每个浏览器指定一个单独的id。我想使用这个id,比如说,如果我想关闭浏览器id#5,我有一个按钮,可以只关闭该浏览器,我不必手动操作并找到需要关闭的浏览器。或者,如果我想刷新浏览器#3,我只需单击一个按钮,它就会自动访问它。我用python来做这件事,所以任何帮助都将非常感谢,因为这对我来说是一个巨大的障碍Python 3.x 如何分配每个浏览器任务,使其具有自己随机生成的ID,以便我可以随时访问它?,python-3.x,selenium,selenium-chromedriver,Python 3.x,Selenium,Selenium Chromedriver,我想知道如何为我打开的每个浏览器窗口分配ID,这样我就可以跟踪它,也许以后可以访问它。我目前正在使用For循环来创建每个浏览器,但在此过程中,我想为每个浏览器指定一个单独的id。我想使用这个id,比如说,如果我想关闭浏览器id#5,我有一个按钮,可以只关闭该浏览器,我不必手动操作并找到需要关闭的浏览器。或者,如果我想刷新浏览器#3,我只需单击一个按钮,它就会自动访问它。我用python来做这件事,所以任何帮助都将非常感谢,因为这对我来说是一个巨大的障碍 def start():
def start():
driver = webdriver.Chrome(chrome_path)
ua = UserAgent()
user_agent = ua.random
options.add_argument(f'user-agent={user_agent}')
options.add_argument("window-size=600,600")
options.add_argument('--disable-extensions')
options.add_argument('--profile-directory=Default')
options.add_argument("--disable-plugins-discovery")
options.add_argument('--allow-running-insecure-content')
options.add_argument("ignore-certificate-errors-spki-list")
options.add_experimental_option("detach", True)
driver.set_window_size(500, 500)
driver.set_window_position(70, 70)
driver.get(page_address)
browsers_opn.append(driver.get(page_address))
我还循环在UI的另一个选项卡中为每个浏览器窗口创建标签和按钮。这就是做这件事的代码
he = 50
s = 95
m = 235
n = 435
ss = 670
hee = 45
for task in range(0, num_tasks):
Label(page2, text=page_name, bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 10)).place(x=s, y=he)
Label(page2, text=proxy_address, bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 10)).place(x=m, y=he)
Label(page2, text=stat, bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 10)).place(x=n, y=he)
button1 = Button(page2, text='Start', bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 10),
command=start).place(x=ss, y=hee)
# button2 = Button(page2, text='Stop', bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 10), command=stop).place(x=ss + 25, y=hee)
tasks_btns.append(button1)
# tasks_btns.append(button2)
he = he + 30
hee = hee + 30
我制作的每个按钮都有一个命令,当点击打开浏览器时。我现在想做的是跟踪浏览器,并将其指定给自己的id,然后我可以创建关闭、最小化甚至刷新特定浏览器窗口的按钮。类似于browserid1.close()的内容。我不知道如何在for循环中实现这一点
以下是我的全部代码供参考:
from tkinter import ttk
import tkinter as tk
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from fake_useragent import UserAgent
root = tk.Tk()
root.title('FlashCop')
root.geometry('1000x750')
root.configure(bg='#2C3E50')
style = ttk.Style()
chrome_path = "chromedriver.exe"
style.theme_create("cool", parent="classic", settings={
"TNotebook": {"configure": {"background": '#2C3E50', "tabmargins": [2, 5, 20, 0]}},
"TNotebook.Tab": {
"configure": {"padding": [5, 1], "background": '#2C3E50', "foreground": '#FDFEFE', 'font': ("Helvetica", '12')},
"map": {"background": [("selected", '#212F3D')],
"expand": [("selected", [1, 1, 1, 0])], }}})
page_name = ''
page_address = ''
def add_tasks():
global page_name
global page_address
is_head = y_nh.get().lower()
y_proxy = y_n.get().lower()
tasks_btns = []
browsers_opn = []
if y_proxy == 'no' or y_proxy == 'n':
proxy_address = 'N/A'
def start():
driver = webdriver.Chrome(chrome_path)
ua = UserAgent()
user_agent = ua.random
options.add_argument(f'user-agent={user_agent}')
options.add_argument("window-size=600,600")
options.add_argument('--disable-extensions')
options.add_argument('--profile-directory=Default')
options.add_argument("--disable-plugins-discovery")
options.add_argument('--allow-running-insecure-content')
options.add_argument("ignore-certificate-errors-spki-list")
options.add_experimental_option("detach", True)
driver.set_window_size(500, 500)
driver.set_window_position(70, 70)
driver.get(page_address)
browsers_opn.append(driver.get(page_address))
if is_head == 'yes' or is_head == 'y':
print("do headless mode")
else:
options = Options()
stat = 'IDLE'
site_page = site.get()
if site_page == 'ys' or site_page == 'yeezysupply':
page_name = 'YeezySupply'
page_address = 'https://yeezysupply.com/'
elif site_page == 'adidas':
page_name = 'Adidas'
page_address = 'https://www.adidas.com/yeezy'
num_tasks = int(num.get())
he = 50
s = 95
m = 235
n = 435
ss = 670
hee = 45
for task in range(0, num_tasks):
Label(page2, text=page_name, bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 10)).place(x=s, y=he)
Label(page2, text=proxy_address, bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 10)).place(x=m, y=he)
Label(page2, text=stat, bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 10)).place(x=n, y=he)
button1 = Button(page2, text='Start', bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 10),
command=start).place(x=ss, y=hee)
# button2 = Button(page2, text='Stop', bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 10), command=stop).place(x=ss + 25, y=hee)
tasks_btns.append(button1)
# tasks_btns.append(button2)
he = he + 30
hee = hee + 30
def startall():
driver = None
ua = None
for start_tasks in range(0, num_tasks):
driver = webdriver.Chrome(chrome_path)
ua = UserAgent()
user_agent = ua.random
driver.set_window_size(350, 350)
options.add_argument(f'user-agent={user_agent}')
options.add_argument("--window-size=600,600")
options.add_argument('--disable-extensions')
options.add_argument('--profile-directory=Default')
options.add_argument("--disable-plugins-discovery")
options.add_argument('--allow-running-insecure-content')
options.add_argument("ignore-certificate-errors-spki-list")
options.add_experimental_option("detach", True)
driver.set_window_position(70, 70)
driver.get(page_address)
start_all = Button(page2, text='Start All', bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 14),
command=startall)
start_all.place(x=900, y=5)
firstclick = True
def on_entry_click(event):
global firstclick
if firstclick:
firstclick = False
site.delete(0, 'end')
def saveproxy():
proxy_list = prox.get("1.0", 'end-1c')
proxy_file = open('proxies.txt', 'w')
proxy_file.write(proxy_list)
proxy_file.close()
style.theme_use("cool")
style.configure('body.TFrame', background='#1C2833')
rows = 0
while rows < 50:
root.rowconfigure(rows, weight=1)
root.columnconfigure(rows, weight=1)
rows += 1
pro_file = open('proxies.txt', 'r')
data = pro_file.read()
nb = ttk.Notebook(root)
nb.grid(row=1, column=0, columnspan=50, rowspan=49, sticky='NESW')
page1 = ttk.Frame(nb, style='body.TFrame')
nb.add(page1, text='Create Tasks')
a = Label(page1, text="Site", bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 14))
a.place(x=8, y=25)
site = Entry(page1, width=20, bg='#212F3D', fg='#FDFEFE')
site.insert(0, 'YeezySupply/Adidas')
site.bind('<FocusIn>', on_entry_click)
site.place(x=10, y=55)
h = Label(page1, text="Tasks:", bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 14))
h.place(x=8, y=135)
num = Entry(page1, width=5, bg='#212F3D', fg='#FDFEFE')
num.place(x=75, y=140)
yes_no = Label(page1, text="Use Proxys?", bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 14))
yes_no.place(x=8, y=220)
y_n = Entry(page1, width=5, bg='#212F3D', fg='#FDFEFE')
y_n.place(x=10, y=250)
headless = Label(page1, text="Headless Mode?", bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 14))
headless.place(x=8, y=330)
y_nh = Entry(page1, width=5, bg='#212F3D', fg='#FDFEFE')
y_nh.place(x=10, y=360)
save = Button(page1, text="Create tasks", bg='#1B2631', fg='#FDFEFE', command=add_tasks)
save.place(x=10, y=650)
page2 = ttk.Frame(nb, style='body.TFrame')
nb.add(page2, text='Tasks')
tasks_id = Label(page2, text='ID', bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 14))
tasks_id.place(x=25, y=5)
tasks_stat = Label(page2, text='Page', bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 14))
tasks_stat.place(x=95, y=5)
proxy_t = Label(page2, text='Proxy', bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 14))
proxy_t.place(x=225, y=5)
status_t = Label(page2, text='Status', bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 14))
status_t.place(x=425, y=5)
browser_open = Label(page2, text='Monitoring Browser', bg='#1C2833', fg='#FDFEFE', font=("Helvetica", 14))
browser_open.place(x=655, y=5)
page3 = ttk.Frame(nb, style='body.TFrame')
nb.add(page3, text='Proxys')
prox = Text(page3, width=50, height=40, bg='#1C2833', fg='#FDFEFE')
prox.place(x=15, y=15)
prox.insert(END, data)
save_prox = Button(page3, text="Save Proxy", bg='#1B2631', fg='#FDFEFE', command=saveproxy)
save_prox.place(x=15, y=675)
page4 = ttk.Frame(nb, style='body.TFrame')
nb.add(page4, text='Settings')
root.mainloop()
从tkinter导入ttk
将tkinter作为tk导入
从selenium.webdriver.chrome.options导入选项
从selenium导入webdriver
从fake_useragent导入useragent
root=tk.tk()
root.title('FlashCop')
根几何体('1000x750')
root.configure(bg='#2C3E50')
style=ttk.style()
chrome\u path=“chromedriver.exe”
样式。主题\u创建(“酷”,parent=“classic”,设置={
“TNotebook”:{“configure”:{“background”:#2C3E50',“tabmargins”:[2,5,20,0]},
“TNotebook.Tab”:{
“configure”:{“padding”:[5,1],“background”:“#2C3E50”,“front”:“#FDFEFE”,“font”:(“Helvetica”,“12”),
“地图”:{“背景”:[(“选定的”,“#212F3D”)],
“展开”:[(“选定的”,[1,1,1,0]),})
页面名称=“”
第页地址=“”
def add_tasks():
全局页面名称
全局页面地址
is_head=y_nh.get().lower()
y_proxy=y_n.get().lower()
任务\u btns=[]
浏览器\u opn=[]
如果y_proxy=='no'或y_proxy=='n':
代理服务器地址='N/A'
def start():
driver=webdriver.Chrome(Chrome\u路径)
ua=UserAgent()
用户\代理=ua.random
options.add_参数(f'user-agent={user_-agent}')
选项。添加参数(“窗口大小=600600”)
options.add_参数('--disable extensions')
options.add_参数('--profile directory=Default')
options.add_参数(“--disable plugins discovery”)
options.add_参数(“--允许运行不安全的内容”)
选项。添加参数(“忽略证书错误spki列表”)
选项。添加实验选项(“分离”,真)
驱动程序。设置窗口大小(500500)
驾驶员。设置车窗位置(70,70)
获取驱动程序(第页地址)
浏览器\u opn.append(driver.get(page\u address))
如果是“是”或是“y”:
打印(“无头模式”)
其他:
选项=选项()
stat='IDLE'
site\u page=site.get()
如果站点页面=='ys'或站点页面=='yeezysupply':
页面名称='YeezySupply'
第页地址:https://yeezysupply.com/'
elif site_page==“阿迪达斯”:
页面名称='阿迪达斯'
第页地址:https://www.adidas.com/yeezy'
num_tasks=int(num.get())
他=50
s=95
m=235
n=435
ss=670
hee=45
对于范围内的任务(0,num_任务):
标签(第2页,文本=页面名称,背景='#1C2833',前景='#FDFEFE',字体=(“Helvetica”,10))。位置(x=s,y=he)
标签(第2页,文本=代理地址,背景='#1C2833',前景='#FDFEFE',字体=(“Helvetica”,10))。位置(x=m,y=he)
标签(第2页,text=stat,bg='#1C2833',fg='#FDFEFE',font=(“Helvetica”,10))。位置(x=n,y=he)
button1=按钮(第2页,文本='Start',背景='1C2833',前景='FDFEFE',字体=(“Helvetica”,10),
命令=开始)。放置(x=ss,y=hee)
#button2=按钮(第2页,text='Stop',bg='1C2833',fg='FDFEFE',font=(“Helvetica”,10),command=Stop)。放置(x=ss+25,y=hee)
任务附加(按钮1)
#任务附加(按钮2)
他=他+30
hee=hee+30
def startall():
驱动程序=无
ua=无
对于范围(0,num_任务)内的开始_任务:
driver=webdriver.Chrome(Chrome\u路径)
ua=UserAgent()
用户\代理=ua.random
驱动程序。设置窗口大小(350350)
options.add_参数(f'user-agent={user_-agent}')
options.add_参数(“--windowsize=600600”)
options.add_参数('--disable extensions')
options.add_参数('--profile directory=Default')
options.add_参数(“--disable plugins discovery”)
options.add_参数(“--允许运行不安全的内容”)
选项。添加参数(“忽略证书错误spki列表”)
选项。添加实验选项(“分离”,真)
驾驶员。设置车窗位置(70,70)
获取驱动程序(第页地址)
“全部启动”按钮(第2页,文本为“全部启动”,背景为“1C2833”,前景为“FDFEFE”,字体为(“Helvetica”,14),
命令=startall)
全部开始位置(x=900,y=5)
firstclick=True
进入时的def单击(事件):
全局首次单击