2015-04-02 29 views
0

綜觀RemoteWebDriver的源代碼,每個操作,包括獲得一個剛剛獲得WebElement的文本,需要發送一個分離命令到瀏覽器。我很擔心,在一個高度動態的JavaScript Web應用程序中,這可能會導致不一致的讀取/隨機異常。批次/硒RemoteWebDriver原子操作?

誰能解釋如何硒與調用頁面上的JavaScript事件隊列同步?如果他們不同步,有沒有辦法從嵌入自定義JavaScript的大斑點做多的硒調用批處理/交易/原子操作分開?

回答

1

硒不提供任何設施,以確保任何單個硒操作是自動完成的,或者多個操作作爲單原子事務的一部分進行。例如,如果點擊元素移動而Selenium點擊它,單擊操作可能會失敗。

是的,這可能會導致問題。您可以自行編寫代碼,以便從不良狀況中恢復。您需要知道您與之交互的內容是:

  1. 等待一個條件,指示UI穩定。例如,我在某些頁面上有Datatables表格。在測試之前檢查表格是否包含正確信息的一件事是確保在更新表格時Datatables自動彈出的小橫幅不可見。否則,我可能正在檢查尚未更新並仍包含舊數據的表。

  2. 檢測到不良狀態並恢復。在一種情況下,我想單擊基於各種條件刷新的UI部分中的按鈕。無論在刷新之前還是之後單擊按鈕都沒關係,但問題是如果在獲取按鈕和點擊它之間發生刷新,Selenium會提高StaleElementReferenceException。我必須捕獲這個異常,重新獲取按鈕並嘗試再次單擊它。 (對於該記錄,在點擊之前測試UI是不值得的,99.999%的點擊時間將通過而不必再次嘗試。)

+0

是的,這很漂亮我所猜測的很多...讓我的任務是測試一個不斷令人耳目一新的Angular桌面超級難度...謝謝無論如何。 – 2015-04-02 13:17:34