2017-06-05 71 views
1

我應該能夠使用的代碼無法打開在硒的webdriver一個NEWTAB在Mac OS X

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

driver = webdriver.Firefox() 
driver.get("http://stackoverflow.com/") 

body = driver.find_element_by_tag_name("body") 
body.send_keys(Keys.COMMAND + 't') 

硒打開一個新的選項卡蟒蛇卻沒有新的標籤頁中打開,並出現任何錯誤消息(http://stackoverflow.com/確實加載)。

請注意,我用的Keys.COMMAND + 't'因爲我運行在OS X上

的代碼,我不知道是什麼原因造成的問題,因爲這樣one的帖子,指出我的代碼應該工作。

更新以包括答案

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

driver = webdriver.Firefox() 
driver.get("http://stackoverflow.com/") 

current_tab = driver.current_window_handle 
driver.execute_script('window.open();') 
new_tab = [tab for tab in driver.window_handles if tab != current_tab][0] 
driver.switch_to.window(new_tab) 
driver.get("http://github.com") 
inputElement = driver.find_element_by_id("user[login]") 
inputElement.send_keys('1') 

current_tab = driver.current_window_handle 
driver.execute_script('window.open();') 
new_tab = [tab for tab in driver.window_handles if tab != current_tab][0] 
driver.switch_to.window(new_tab) 
driver.get("http://github.com") 
inputElement = driver.find_element_by_id("user[email]") 
inputElement.send_keys('2') 
+1

嘗試'driver.execute_script( '的window.open();')',而不是 – Andersson

+0

@Andersson這工作....我不知道爲什麼。你知道如何切換到新的打開標籤。如果我能弄清楚,我會考慮回答這個問題。 – AzJ

回答

1

下面的代碼試圖打開新的標籤頁,並切換到它:

driver = webdriver.Firefox() 
driver.get("http://stackoverflow.com/") 

current_tab = driver.current_window_handle 
driver.execute_script('window.open("http://github.com");') 
new_tab = [tab for tab in driver.window_handles if tab != current_tab][0] 
driver.switch_to.window(new_tab) 
inputElement = driver.find_element_by_id("user[login]") 
inputElement.send_keys('1') 

driver.execute_script('window.open("http://github.com");') 
third_tab = [tab for tab in driver.window_handles if tab not in (current_tab, new_tab)][0] 
driver.switch_to.window(third_tab) 
inputElement = driver.find_element_by_id("user[email]") 
inputElement.send_keys('2') 

您可以使用driver.close()關閉新的標籤和driver.switch_to.window(current_tab)切換回初始選項卡

另請注意,您可以通過頁面URL y OU要在新標籤作爲參數就像打開window.open()

driver.execute_script('window.open("https://google.com");') 
+0

非常有幫助。還有一個問題,如果你看看我發佈的更新,而不是切換到最新的選項卡,腳本會回到第一個。我不確定它爲什麼這樣做。 – AzJ

+0

當您搜索電子郵件輸入字段時,您不需要再次切換並打開Github。檢查更新 – Andersson

+0

我認爲你誤解了我的問題。我試圖在兩個不同的選項卡上打開同一個網站兩次,並將文本添加到兩個不同的字段。 – AzJ