2

I would like to run my script on Multiple browser using selenium. As of now I am able to perform the operation by opening one browser at a time. Eg:- Register to amazon. I want to be able to Register two users to amazon at the same time.

This is the code I have as of now.

import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.select import Select
driver.get("https://www.amazon.com/ap/register?openid.pape.max_auth_age=0&openid.return_to=https%3A%2F%2Fwww.amazon.com%2F%3Fref_%3Dnav_signin&prevRID=VBHFJ50CPKFJ3PGG7RDY&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.assoc_handle=usflex&openid.mode=checkid_setup&openid.ns.pape=http%3A%2F%2Fspecs.openid.net%2Fextensions%2Fpape%2F1.0&prepopulatedLoginId=&failedSignInCount=0&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&pageId=usflex&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0")
            driver.find_element_by_xpath("""//*[@id="s2id_ID_form4a8055de_guest_register_sponsor_lookup"]/a/span[2]/b""").click()
            driver.find_element_by_xpath("""//*[@id="s2id_autogen1_search"]""").send_keys(v1)

By using this I can run it for one user at one time. But I want to be able to register more than two users upto n users at the same time. Hence, the multiple windows questions.

1

2 Answers 2

3

You could create multiple instances of the webdriver. You can then manipulate each individually. For example,

from selenium import webdriver
driver1 = webdriver.Chrome()
driver2 = webdriver.Chrome()
driver1.get("http://google.com")
driver2.get("http://yahoo.com")
Sign up to request clarification or add additional context in comments.

3 Comments

Exactly what I thought of, but this again executes the data sequentially and not parallel. I also thought of loops concept.
Check out stackoverflow.com/questions/16551111/…. Also, Selenium Grid 2 seems like a common way this is done. See gridlastic.com/python-code-example.html
Selemium Grid is for multi threading, which is not really a good approach for what Abul wants. Instantiating multiple instances of webdriver will not solve the problem since this will be one thread and lines will be executed one by one. The best solution is right now in python itself (v 3.4 and higher) that is called Asynchronous Executing. Study these two good sources and you will be able to get this done: A guide to asynchronous programming in Python with asyncio
1

This question is a bit old at this point, but I still found it applicable to something I was having trouble with today.

In order to achieve parallel processes you need to utilize multiprocessing. Essentially, this allows you to create browser instances for each function and allow each script to lock to each browser GIL separately. You can then start each of the processes in your main code and they will all execute in parallel.

If you need an explanation on how to do this, a great video can be found here

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.