請注意,這個問題是Python 3.5.2
,只有Python答案纔會被接受。除非這一定可以在Java中處理?將流程自動化爲內部項目的一部分。一切正常,使用IE webdriver
,但不是phantomJS
網絡驅動程序(這是由於功能有限)。但是,需要解決方案/解決方案。Python Selenium PhantomJS登錄對話框
打開內部網站時,Windows Security login dialog box
出現提示輸入用戶名,密碼並按'確定'。隨着IE web driver
,它處理得很好用:
loginAlert = driver.switch_to_alert()
loginAlert.authenticate(username, password)
的JavaScript:
driver.execute_script("window.confirm = function(){return true;}")
加載,使該提示頁面之前正在運行,似乎沒有確認登錄的警報,爲無論是幻影還是IE。即使這樣做,這也不會輸入登錄信息。如前所述,這是來自瀏覽器的Windows安全提示,而不是一個元素。
登錄後,頁面會重新加載一個ASP.NET_SessionId
Cookie,一旦會話結束,該Cookie就會過期。我已經嘗試通過IE登錄,然後將該Cookie添加到Phantom中,但它似乎沒有匹配域。
我已經嘗試使用:
driver.save_screenshot(filename) to see what's happening in phantom
與IE driver
工作,但與PhantomJS
,只有一個透明的圖像保存。整個http://username:[email protected]
東西不適用於IE或幻影驅動程序。完成後無法加載/使用URL。
如何處理或解決Windows安全登錄對話框?我試圖尋找替代品,如pyvirtualdisplay
,但沒有找到關於如何使用Python 3
在windows
上工作的信息。
我也嘗試設置phantomjs
所需的功能自定義標頭認證,但這似乎並沒有爲此做任何事情。
我也嘗試過使用ActionChains
,但是當警報存在時(無論是IE還是幻像驅動程序)它們都不起作用。一個UnexpectedAlertPresentException
被拋出,即使這被捕獲,並且你試圖執行這些動作,一旦被捕獲,警報似乎就會結束。