Selenium 线程与硒
我试图在Selenium中创建多个选项卡,并在每个选项卡上同时打开一个页面。这是代码Selenium 线程与硒,selenium,selenium-webdriver,selenium-chromedriver,python-multithreading,Selenium,Selenium Webdriver,Selenium Chromedriver,Python Multithreading,我试图在Selenium中创建多个选项卡,并在每个选项卡上同时打开一个页面。这是代码 CHROME_DRIVER_PATH = "C:/chromedriver.exe" from selenium import webdriver import threading driver = webdriver.Chrome(CHROME_DRIVER_PATH) links = ["https://www.google.com/", "https://stackoverflow.
CHROME_DRIVER_PATH = "C:/chromedriver.exe"
from selenium import webdriver
import threading
driver = webdriver.Chrome(CHROME_DRIVER_PATH)
links = ["https://www.google.com/",
"https://stackoverflow.com/",
"https://www.reddit.com/",
"https://edition.cnn.com/"]
def open_page(url, tab_index):
driver.switch_to_window(handles[tab_index])
driver.get(url)
return
# open a blank tab for every link in the list
for link in range(len(links)-1 ): # 1 less because first tab is already opened
driver.execute_script("window.open();")
handles = driver.window_handles # get handles
all_threads = []
for i in range(0, len(links)):
current_thread = threading.Thread(target=open_page, args=(links[i], i,))
all_threads.append(current_thread)
current_thread.start()
for thr in all_threads:
thr.join()
执行时不会出错,据我所知,这在逻辑上应该是正确的。但是,这个项目的效果并不像我想象的那样。它一次只打开一页,有时甚至不切换选项卡。。。在我的代码中是否有我不知道的问题,或者线程不适用于Selenium?无需切换到新窗口以获取URL,您可以尝试在下面的“新建”选项卡中逐个打开每个URL:
links = ["https://www.google.com/",
"https://stackoverflow.com/",
"https://www.reddit.com/",
"https://edition.cnn.com/"]
# Open all URLs in new tabs
for link in links:
driver.execute_script("window.open('{}');".format(link))
# Closing main (empty) tab
driver.close()
现在,您可以从
驱动程序处理(如果需要)所有窗口。窗口\u照常处理无需切换到新窗口以获取URL,您可以尝试在下面的新选项卡中逐个打开每个URL:
links = ["https://www.google.com/",
"https://stackoverflow.com/",
"https://www.reddit.com/",
"https://edition.cnn.com/"]
# Open all URLs in new tabs
for link in links:
driver.execute_script("window.open('{}');".format(link))
# Closing main (empty) tab
driver.close()
现在,您可以从驱动程序处理(如果需要)所有窗口。窗口\u像往常一样处理python多线程是您的用例的强制性要求吗?在Selenium中遍历多个选项卡可以用更简单的方法完成是的,我希望使用多线程同时打开多个链接python多线程
是您的用例的强制性要求吗?在Selenium中遍历多个选项卡可以以更简单的方式完成是的,我希望使用多线程同时打开多个链接OK,但这并不能真正回答我关于线程和Selenium的问题。此代码将逐个链接并在新选项卡中打开。但是有可能在不同的选项卡中同时打开所有链接吗?@DoctorEvil,线程或多处理的要点是并行运行进程(因为GIL,这实际上是不可能的),而不是同时启动某些东西。因此,在任何情况下,您都将逐个打开每一页,但不能同时打开。还要注意,您不能手动打开多个选项卡。。。Selenium也不能做到这一点……好吧,但这并不能真正回答我关于线程和Selenium的问题。此代码将逐个链接并在新选项卡中打开。但是有可能在不同的选项卡中同时打开所有链接吗?@DoctorEvil,线程或多处理的要点是并行运行进程(因为GIL,这实际上是不可能的),而不是同时启动某些东西。因此,在任何情况下,您都将逐个打开每一页,但不能同时打开。还要注意,您不能手动打开多个选项卡。。。硒也不能做到这一点。。。