2017-10-09 123 views
0

我現在用硒練,但我似乎無法得到它的打印正確的URL。硒不打印出正確的URL

import time 
from selenium import webdriver 

driver = webdriver.Firefox() 
home_page = '' 
driver.get(home_page) 


time.sleep(15) 
for i in range(1,9): 
    listing_page = driver.find_element_by_xpath('//*[@id="m_property_lst_cnt_realtor_more_'+str(i)+'"]').click() 
    realtor_url = driver.find_element_by_xpath('//*[@id="lblMediaLinks"]/a').click() 
    print(driver.current_url) 
    driver.get(home_page) 
    time.sleep(5) 

我需要在selenium點擊realtor_url中的元素時打開的網頁的URL。它會打印來自listing_page的第一次點擊的網址。

(注:即從realtor_url打開是完全不同的網站,如果這能幫助網頁)

回答

0

您需要打印網址前切換到新打開的窗口,然後關閉新打開的窗口並切換回到原來的窗口。

// do the click that opens another window 
WebDriverWait(driver, 10).until(lambda d: len(d.window_handles) == 2) 
driver.switch_to_window(driver.window_handles[1]) 
print(driver.current_url) 
driver.close() 
driver.switch_to_window(driver.window_handles[0]) 

一對夫婦的其他東西......

  1. .click()回報void,即什麼都沒有,所以沒有什麼永遠保存在listing_pagerealtor_url變量。

  2. sleep()是一種不好的做法。不要使用它。谷歌它找出詳細的原因。與相關WebDriverWait更換sleep()

+0

它正在做的是點擊房地產列表,然後從該頁面點擊代理網站並打印出他們網頁的網址。網頁上有9個列表,因此它通過該行併爲每個列表執行此操作。 – Dotpy

+0

我現在看到。我在第一次點擊聲明中錯過了「我」。我添加了一些細節。 – JeffC

+0

不用擔心,我的等待時間修修補補第二個URL,但問題是,打印(driver.current_url)打印從第一個實例,而不是從我希望它的新網頁的URL。你和Kiran的答案都解決了很多挫折!謝謝:) – Dotpy

0

我相信你需要改變窗口的「焦點」才能打印正確的URL。當前窗口處理程序可能指向前一次單擊,而不是將焦點更改爲新窗口。 嘗試並改變「窗口處理程序」。每個新窗口都有一個處理程序。

我希望這會有所幫助。 window_handles或者這Handle multiple window in Python

編輯:

以下應爲您帶來最新的開放窗口。

driver.switch_to_window(driver.window_handles[-1])