簡體   English   中英

在Mac OS X上使用Selenium進行測試時,如何強制Firefox成為前台應用程序

[英]How to force Firefox to be the foreground application when testing with Selenium on Mac OS X

我們最近開始使用Selenium測試基於Django的應用程序。 測試在Linux上運行正常,但有些在Mac OS X上失敗。我們在兩種情況下都使用Firefox作為瀏覽器,我們花了一段時間(並且運氣好)才發現這兩種情況之間的重要區別在於FF作為前台應用程序或后台窗口運行。 這是Linux上發生的事情:

  1. Selenium告訴Firefox進入用戶注冊頁面。
  2. Selenium填寫用戶名和無效的電子郵件地址。
  3. Selenium將焦點從電子郵件地址字段更改為同一頁面上的另一個字段(它恰好是搜索框,但這並不重要 - 所有重要的是焦點更改事件)。
  4. 網頁中的Javascript驗證代碼注意到電子郵件地址無效並在頁面中插入錯誤消息。
  5. Selenium檢測到該錯誤消息並將測試標記為已通過。

但是,當我們在Mac OS X上運行時,步驟#4不會發生, 除非我們在測試運行時手動前置Firefox窗口---如果我們將它留在后台(默認情況下它出現的地方),瀏覽器中的Javascript沒有獲得焦點更改事件,因此錯誤消息永遠不會插入到頁面的DOM中,因此Selenium超時等待它,測試失敗。

我們可以在測試運行時強制Selenium將瀏覽器置於前台,這樣我們的Javascript就能獲得我們想要的事件嗎? 如果是這樣,怎么樣?

Selenium通過Javascript驅動瀏覽器。 沒有辦法通過JS控制瀏覽器窗口。 一般來說,測試Selenium中的'onfocus'和'onblur'事件非常困難。

您可以嘗試通過在輸入無效的電子郵件地址后使用Selenium的'runScript'或'getEval'方法進行JS評估來自行觸發此事件。 這不是“純”黑盒測試,即如果更改驗證的實現,則需要更改測試,但這是執行此測試的最可行方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM