剛纔我遇到了同樣的問題,在我看來,我發現一種方法比嘗試將密鑰發送到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
Cuz PhantomJS是JavaScript動力,你可以隨時打開一個新的窗口與'driver.execute_script('window.open(「http:/ /your-url.dot「)');'代替」點擊打開新標籤的鏈接「。僅僅依靠網址命名你的手柄也更好,但也可以。 – erm3nda
這實際上並沒有回答如何打開新窗口,並且像我說的那樣通過JavaScript做的確會導致在功能中丟失以前的userAgent(以及更多的事情)。我認爲附加一個虛擬的'target ='_ blank''鏈接並點擊它將是一個很好的方法。 – erm3nda