Changing Selenium driver for new URL
17,780
Solution 1
Instead of having independent functions, create a class with driver instance as an instance variable. Then, use self.driver.get()
to navigate to a different URL:
class MyTest(object):
def __init__(self):
self.driver = webdriver.Firefox()
def login_process(self):
self.driver.get("URL_1")
#successfully navigated to URL_1
elem = self.driver.find_element_by_name("username")
elem.clear()
elem.send_keys(user_name)
elem = self.driver.find_element_by_name("password")
elem.clear()
elem.send_keys(password)
self.driver.find_element_by_id("submit").click()
#successfully entered URL_2
def query(self):
self.driver.get("URL2")
# do smth
test = MyTest()
test.login_process()
test.query()
Solution 2
After navigating to the new page if you want to do something on that new page
newURl = driver.window_handles[0]
driver.switch_to.window(newURl)
After doing this you can do something in the new url without getting "no such element exceptions"
Author by
ac2001
Updated on June 12, 2022Comments
-
ac2001 almost 2 years
I used Selenium to navigate to a URL (i.e. URL_1) with a login/password and provided the login credentials. I'm logged in and the URL (i.e. URL_2) has changed as expected. I don't know how to navigate URL_2 because the driver still refers to URL_1.
Thanks in advance.
from selenium import webdriver from selenium.webdriver.common.keys import Keys user_name = 'xyz' password = 'xyz' def login_process(): driver = webdriver.Firefox() driver.get("URL_1") #successfully navigated to URL_1 elem = driver.find_element_by_name("username") elem.clear() elem.send_keys(user_name) elem = driver.find_element_by_name("password") elem.clear() elem.send_keys(password) driver.find_element_by_id("submit").click() #successfully entered URL_2 def query(): HOW DO I CHANGE THE DRIVER TO URL_2? #elem = driver.find_element_by_class_name(ticker_box) #this doesn't work, references URL_1 driver #elem.clear() #elem.send_keys('xyz')