Каков самый быстрый способ открыть URL-адреса на новых вкладках через Selenium-Python?

Я хочу создать скрипт python, чтобы открыть много вкладок

import os import selenium from selenium import webdriver driver =webdriver.Chrome('/usr/local/bin/chromedriver') driver.execute_script("window.open('http://www.msn.com');") driver.execute_script("window.open('http://www.cnn.com');") driver.execute_script("window.open('http://www.yahoo.com');") driver.execute_script("window.open('https://www.apple.com');") driver.execute_script("window.open('https://www.google.com');") driver.execute_script("window.open('https://www.stackoverflow.com');") # driver.quit() 

Когда я бегу, я получаю

введите описание изображения здесь

Это то, что у меня есть сейчас, это самый быстрый способ?


Раньше я имел это

 # -*- coding: utf-8 -*- import os import selenium from selenium import webdriver from selenium.webdriver.common.keys import Keys driver =webdriver.Chrome('/usr/local/bin/chromedriver') #1 driver.get("http://msn.com") #2 driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't') driver.switch_to.window(driver.window_handles[-1]) driver.get("http://cnn.com") #3 driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't') driver.switch_to.window(driver.window_handles[-1]) driver.get("http://www.yahoo.com") #4 driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't') driver.switch_to.window(driver.window_handles[-1]) driver.get("https://www.apple.com") #5 driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't') driver.switch_to.window(driver.window_handles[-1]) driver.get("https://www.google.com") #6 driver.find_element_by_tag_name('body').send_keys(Keys.COMMAND + 't') driver.switch_to.window(driver.window_handles[-1]) driver.get("https://www.stackoverflow.com") 

Это работает, но это очень slow .


Я начинаю с 6 сейчас, но хочу загрузить 100 вкладок.

Кроме того, как я могу избавиться от своей первой странной смотрящей вкладки? Я даже уверен, почему он там.

Обновите хромограф (> 2.25) / хромовый браузер (> 55.0) на вашем MAC-адресе, чтобы удалить пустые данные; Вкладка. Вы можете использовать threading или multiprocessing чтобы ускорить процесс.

 from multiprocessing import Process import os import selenium from selenium import webdriver from selenium.webdriver.common.keys import Keys driver =webdriver.Chrome('/usr/local/bin/chromedriver') driver.get("http://msn.com") def func1(): print 'launching: MSN' driver.execute_script("window.open('http://www.msn.com');") def func2(): print 'launching: CNN' driver.execute_script("window.open('http://www.cnn.com');") if __name__ == '__main__': p1 = Process(target=func1) p1.start() p2 = Process(target=func2) p2.start() p1.join() p2.join() def runInParallel(*fns): proc = [] for fn in fns: p = Process(target=fn) p.start() proc.append(p) for p in proc: p.join() runInParallel(func1, func2) 

В зависимости от того, сколько у вас процессоров, загрузка машины, выбор времени для многих событий, происходящих в компьютере, будет влиять на время начала streamов / процесса. Кроме того, поскольку процессы запускаются сразу после создания, накладные расходы на создание процесса также должны быть рассчитаны в разнице во времени, которую вы видите.

Таким образом, у нас уже есть 2 подхода, чтобы открыть New TAB с Selenium .

Ваш предыдущий подход с send_keys(Keys.COMMAND + 't') должен потреблять больше времени, поскольку мы switch_to.window() и get("http://www.url.com") . Следовательно, медленнее.

Ваш текущий подход с execute_script должен быть быстрее, поскольку мы просто вводим Java Scripts чтобы открывать новые TAB ы с URL адресами.

Теперь причина, по которой вы видите Blank Window состоит в том, что как только вы инициализировали браузер через:

 driver =webdriver.Chrome('/usr/local/bin/chromedriver') 

После этого мы не вызывали метод get() для открытия любого URL . Скорее всего, мы прямо помогли JavascriptExecutor открыть NEW TAB s. Следовательно, первая TAB остается неиспользованной.


Обновить :

Чтобы привести unused TAB в игру, мы можем получить доступ к первому из URL через первый метод get() вызова TAB следующим образом:

 driver =webdriver.Chrome('/usr/local/bin/chromedriver') driver.get("http://www.msn.com") driver.execute_script("window.open('http://www.cnn.com');") driver.execute_script("window.open('http://www.yahoo.com');") driver.execute_script("window.open('https://www.apple.com');") driver.execute_script("window.open('https://www.google.com');") driver.execute_script("window.open('https://www.stackoverflow.com');") 

Резюме :

Чтобы открыть New Blank TAB вы можете использовать следующую строку кода:

 driver.execute_script("window.open('','_blank');"); 

Чтобы открыть New TAB with url вы можете использовать следующую строку кода:

 driver.execute_script("window.open('http://facebook.com/');"); 
  • Почему функция может изменять некоторые аргументы, воспринимаемые вызывающим, но не другие?
  • Как определить, является ли переменная Python функцией?
  • тип намека в classе
  • Функции, которые помогают понять структуру json (dict)
  • Вызов функции модуля с использованием его имени (строки)
  • Как определить версию Python во время выполнения?
  • Что означает% s в строке формата python?
  • В чем цель __str__ и __repr__?
  • Может ли Python распечатать определение функции?
  • Как создавать списки содержат только отдельный элемент в Python?
  • Для чего используется функция id ()?
  • Давайте будем гением компьютера.