2016-01-22 69 views
4

您好,我使用硒來點擊鏈接,並且通常使用在線Web應用程序。在硒中切換並聚焦新打開的標籤

我點擊一個特定的鏈接,打開一個新標籤並在新打開的標籤中執行一個動作,我遇到了麻煩。我有這樣的代碼:

friend_link = browser.find_element_by_tag_name('a') 
friend_link.click() # this is where new tab is opened 

在這之後的webdriver(從我的眼睛)打開新的標籤沒有我不得不打電話

browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL + Keys.TAB) 

所以,一切都很好。新的選項卡在webdriver上打開。當我嘗試點擊新打開的選項卡上的鏈接時,出現'No element'異常,這意味着它無法找到我正在查找的元素。

兩個問題:

1)是否webdriver的知道,一個新開的標籤被打開,並執行該選項卡上的行動?也許我必須告訴它。我試過

main_window = browser.current_window_handle 
browser.switch_to_window(main_window) 

這是應該重新聚焦新打開的標籤,但沒有運氣。

2)有沒有辦法查看計算機是否知道它在新選項卡上?

+0

我加了一個答案,你可以試試。 –

回答

2

檢查driver.window_handles如果它返回多個實例,第二個應該是新打開的選項卡。使用driver.switch_to_window(instance-id)來切換它。見下:

>>> driver.window_handles 
[u'CDwindow-608A7C64-A633-4DEC-B88F-6A2578C47669'] 
>>> driver.window_handles 
[u'CDwindow-608A7C64-A633-4DEC-B88F-6A2578C47669', u'CDwindow-A2A95622-3146-4BF6-9E7A-7A6632A73C86'] 
>>> driver.current_window_handle 
u'CDwindow-608A7C64-A633-4DEC-B88F-6A2578C47669' 
>>> driver.switch_to.window("CDwindow-A2A95622-3146-4BF6-9E7A-7A6632A73C86") 
>>> driver.current_window_handle 
u'CDwindow-A2A95622-3146-4BF6-9E7A-7A6632A73C86' 
>>> driver.get("http://www.amazon.com") 
+1

在[文檔](http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webdriver)中,它提到了'.switch_to_window'已被棄用,以支持'.switch_to.window ' – wasabigeek

+0

switch_to_window已棄用,因此更改爲switch_to.window感謝@wasabigeek –