2017-10-09 13 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) 

セレンがrealtor_urlの要素をクリックすると開くWebページのURLが必要です。代わりに、listing_pageから最初のクリックのURLを表示します。

(注意:realtor_urlから開かれるWebページには、完全に異なるウェブサイトです、それは場合に役立ちます)

答えて

0

あなたが新しく開いたウィンドウを閉じた後、URLを印刷する前に、新しく開いたウィンドウに切り替え、スイッチバックする必要があります元のウィンドウに移動します。

// 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_pageまたはrealtor_url変数に保存されているものは何もありません。

  2. sleep()です。それを使用しないでください。 Googleはその理由を詳細に調べる。 sleep()WebDriverWaitに置き換えてください。

+0

そのページから不動産のリストをクリックして、エージェントのウェブサイトをクリックし、ウェブページのURLをプリントアウトすることです。それは行を通過し、それぞれのためにこれを行うので、ページ上に9のリストがあります。 – Dotpy

+0

私は今参照してください。私はあなたの最初のクリック文で '私は'を逃した。私はいくつかの詳細を追加しました。 – JeffC

+0

2番目のURLの待機時間が問題になりましたが、print(driver.current_url)は、新しいWebページからではなく最初のインスタンスからURLを出力するという問題があります。あなたとKiranの答えは、多くの不満を解消しました!ありがとうございます:) – Dotpy

0

正しいURLを印刷するには、ウィンドウの「フォーカス」を変更する必要があると思います。現在のウィンドウハンドラは、以前のクリックを指している可能性があり、フォーカスを新しいウィンドウに変更していない可能性があります。 「ウィンドウハンドラ」を変更しようとします。新しいウィンドウが開くたびにハンドラがあります。

こちらがお役に立てば幸いです。 window_handlesまたはこのHandle multiple window in Python

EDIT:

以下は、最新のオープンウィンドウにあなたを持参してください。

関連する問題