2016-02-28 186 views
4

我用PhantomJS webdriver使用硒,我發現我無法使用此webdriver打開一個新選項卡。我正在使用標準線:python硒phantomJS新選項卡不工作

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

我使用的是Mac。

我也試過這與Firefox和它的作品。

任何幫助讓它與PhantomJS合作,將不勝感激!

回答

6

剛纔我遇到了同樣的問題,在我看來,我發現一種方法比嘗試將密鑰發送到PhantomJS更好。

請記住,PhantomJS是一款無頭瀏覽器 - 您的操作系統無法通過鍵盤快捷鍵訪問實際窗口。這就是說,每次打開一個新的標籤頁/窗口時,它都會添加到驅動程序的窗口句柄中。每個窗口句柄都有唯一的標識符。

你可以很容易地切換到該窗口的ID(並返回到你原來的窗口處理程序 - 如果你想)。

# Click a link that opens a new tab ... 

# You'll see there's a new window handle! 
print(driver.window_handles) 

# Switch to the new window handle in the window_handles list 
driver.switch_to.window(driver.window_handles[1]) 

# Switch back to the original window 
driver.switch_to.window(driver.window_handles[0]) 

然後是微不足道的只是檢查駕駛員的current_url,以確保你在正確的頁面上,即:

assert "www.stackoverflow.com" in driver.current_url 

這個答案讓我:https://stackoverflow.com/a/29125205/295246

+0

Cuz PhantomJS是JavaScript動力,你可以隨時打開一個新的窗口與'driver.execute_script('window.open(「http:/ /your-url.dot「)');'代替」點擊打開新標籤的鏈接「。僅僅依靠網址命名你的手柄也更好,但也可以。 – erm3nda

+1

這實際上並沒有回答如何打開新窗口,並且像我說的那樣通過JavaScript做的確會導致在功能中丟失以前的userAgent(以及更多的事情)。我認爲附加一個虛擬的'target ='_ blank''鏈接並點擊它將是一個很好的方法。 – erm3nda