Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find URL after clicking a link

How can i use selenium to find the current url after clicking an element. I have this website: http://www.runningintheusa.com/Classic/View.aspx?RaceID=5622

I have the code(assuming all related libraries are imported)

def get_detail(x):
    dic = {}
    driver = webdriver.PhantomJS(path)
    driver.get(x)
    driver.find_element_by_id('ctl00_ctl00_MainContent_hypPrimaryURL').click()
    return driver.current_url
print get_detail('http://www.runningintheusa.com/Classic/View.aspx?RaceID=5622')

I ran the code and it only return the original url which is http://www.runningintheusa.com/Classic/View.aspx?RaceID=5622

How can i find the url after clicking the Race Website link on the site which is http://flagstaffbigs.org/dave-mckay-run.htm

like image 566
V.Anh Avatar asked Oct 28 '25 05:10

V.Anh


2 Answers

Is it because a new tab is opening, this will select the active newest tab.

driver.switch_to_window(driver.window_handles[-1])
return driver.current_url;
like image 75
kparker Avatar answered Oct 30 '25 22:10

kparker


I tried the website here and when you click the element you actually open another tab. So the driver.current_url returns the original url because it hasn't change, you have only created a new tab with the new URL.

What you need to do is change the driver to the new tab and get its URL, or change the link to open in the same tab.

Here is an example of switching to a new tab in Java.

To change the link to open in the same tab you can simply remove the target="_blank" from the HTML.

like image 30
gnobre Avatar answered Oct 30 '25 23:10

gnobre