2014-08-27 71 views
1

我們目前正在調查Selenium作爲嵌入在一系列控制器中的Web服務器的測試工具。我希望爲所有驅動程序重用相同的Python(2.7)代碼,但儘管Chrome和Firefox可以很好地運行,但是IE11(意外?)不喜歡它。 IE打開,但隨後Python引發異常。Python Selenium - 適用於Chrome,Firefox和IE的通用腳本

起初我以爲這個問題只是與用戶:包含在URL PWD ...

driver.get("http://" + "acc:[email protected]") 

但是,即使刪除了登錄信息並手動輸入登錄,後續代碼後...

(driver.switch_to.frame("links_frame") 

然後也失敗。

驅動程序之間會有這種差異嗎?我讀過其他人成功地爲所有瀏覽器重複使用相同的代碼,所以必須認定我可能做錯了什麼?

詳情:

在一審...

... 25行,在driver.get( 「HTTP://」 + 「ACC:[email protected]」)
... \ webdriver.py「,第185行,在self self.execute(Command.GET,{'url':url})
... webdriver.py」中,第173行,執行self.error_handler。 check_response(response)... \ errorhandler.py「,第164行,在check_response中引發exception_class(消息,屏幕,堆棧跟蹤)selenium.common.exceptions.WebDriverException:消息:u'failed導航到acc:[email protected]這通常意味着調用COM方法IWebB rowser2 :: Navigate2()失敗。'

在第二個實例:
...線33,在driver.switch_to.frame( 「links_frame」)#選擇包含測試的下一個元素的IFRAME ... \的webdriver \遠程\ switch_to.py」 ,第64行,in frame self._driver.execute(Command.SWITCH_TO_FRAME,{'id':frame_reference})
... \ webdriver.py「,第173行,執行self.error_handler.check_response(響應)
... \的webdriver \遠程\ errorhandler.py」,線路164,在check_response加註exception_class(消息,屏幕,堆棧跟蹤)selenium.common.exceptions.UnexpectedAlertPresentException:消息:u'Modal對話框本」 - -

+0

_How_沒有你的代碼會失敗? – 2014-08-27 13:01:03

+0

@MickM你在評論中輸入的信息屬於你的問題。請修改您的問題,以便它包含這些錯誤消息,並請格式化它們以便它們易於閱讀。 – Louis 2014-08-27 16:13:40

回答

1

IE很煩人...但它不應該是python,這是問題。一定要將所有保護模式設置設置爲相同的所有區域(啓用/禁用)。否則IEDriver在打開後會丟失窗口,這與您所遇到的情況很相似。

您可以絕對使用相同的代碼進行所有測試......驅動程序部分發生更改,但它們都基於相同的基類/接口。對於Python ...導入相同的庫。

下面是一些IE引用:Selenium WebDriver on IE11

+0

感謝您的信息......我現在正在追求。 – MickM 2014-08-28 12:55:04

+0

啓用不起作用,我不得不全部禁用它們。 – Math 2015-10-29 19:07:08

+0

這不回答OP的具體問題。 – 2016-02-23 15:21:55

1

回答你的問題的第一部分...

起初我以爲這個問題只是 與用戶:包含在URL PWD

你是對的。 IE的現代版本不允許您在URL中傳遞基本身份驗證憑據。大多數其他瀏覽器仍然允許。

有關說明,請參閱Microsoft知識庫文章:834489

(注:有黑客禁用此行爲也有更好的方法來處理身份驗證。)

相關問題