2017-02-08 91 views
0

請注意,這個問題是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 3windows上工作的信息。

我也嘗試設置phantomjs所需的功能自定義標頭認證,但這似乎並沒有爲此做任何事情。

我也嘗試過使用ActionChains,但是當警報存在時(無論是IE還是幻像驅動程序)它們都不起作用。一個UnexpectedAlertPresentException被拋出,即使這被捕獲,並且你試圖執行這些動作,一旦被捕獲,警報似乎就會結束。

回答

0

我的壞!

雖然username:[email protected]沒有在IE webdriver工作 - it did work in the PhantomJS web driver.

然而,該網站已經限制瀏覽器的兼容性 - 它doesn't load properly in either Chrome or Firefox,它是IE特定的。

PhantomJS似乎處理該網站的方式與基於頁面源代碼比較的Chrome/Firefox相同。

因此,I am trying to find a way to make the current IE driver invisible/hidden.

我發現:

headless-selenium-for-win using Python

然而,儘管這裏的用戶說他們得到它的工作,當我嘗試initialize the driver, it just hangs, the code doesn't proceed and no error messages are provided.

問另一個問題關於這一點。