What is the fastest way to open urls in new tabs via Selenium - Python?

0
0

I want to create a python script to open up a lot tabs

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()

When I run I get

enter image description here

Is what I have right now is the fastest way?


I used to have this

# -*- 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")

It works but it is painfully slow.


I start with 6 now, but I want to load 100 tabs.

Also, how do I get rid of my first weird looking tab?
I am even sure why it is there.

  • You must to post comments
0
0

Upgrade the chromedriver(>2.25)/chrome browser(>55.0) on your MAC to remove the empty data; tab.
You can use threading or multiprocessing to speed up the process.

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)

Depending on how many CPUs you have, the load of the machine, the timing of many things happening in the computer will have an influence on the time the threads/process start. Also, since the processes are started right after creation, the overhead of creating a process also has to be calculated in the time difference you see.

  • You must to post comments
Showing 1 result
Your Answer
Post as a guest by filling out the fields below or if you already have an account.
Name*
E-mail*
Website