2009-12-12 146 views
5

我使用Selenium來測試我的應用程序。一個不錯的測試是在每次DOM操作之後,我會驗證DOM。有沒有一個很好的方法來做到這一點?使用Selenium驗證DOM操作

明顯的方式是:

  • 使用一些內置硒功能。有一個嗎?
  • 在操作之後獲取DOM的HTML並使用本地驗證器。但是,我看不到如何從Selenium獲取當前DOM的HTML。
  • 我可以以某種方式通過JavaScript,通過在測試時或通過Selenium添加JS文件。但我不知道如何去做這件事。思考?

回答

4

使用Selenium沒有內置的過程。然而,有一個基於WebDriver的開源項目,WebDriver正在成爲Selenium 2,它允許您進行佈局測試。

該項目在http://code.google.com/p/fighting-layout-bugs/,並在GTAC 2009首次在蘇黎世展出。該代碼使用W3C和jQuery來檢查DOM的有效性。看看講話的視頻和那裏的代碼。

編輯:

由於sampablokuper W3C的驗證是在code.google.com/p/w3c-markup-validation-filter/

+0

這是一個非常酷的項目,但是佈局測試與測試HTML的有效性完全不同。 – sampablokuper 2009-12-13 05:11:16

+0

框架工作做w3c驗證。觀看網站上的視頻以查看示例。它會在頁面上創建一個紅色或綠色的框,具體取決於它是如何驗證的,因此您只需檢查它的顏色 – AutomatedTester 2009-12-13 10:36:05

+0

確實,vid確實提到了它,但實現它的代碼實際上是在Michael Tamm的另一個項目中:http:/ /code.google。com/p/w3c-markup-validation-filter /。我還沒有設法讓我的系統上運行的代碼(我不經常碰到Java,所以我有點慢),但我期待着這樣做。乾杯:) – sampablokuper 2009-12-13 17:07:02

1

我一直在琢磨站在同一戰線。這是我迄今爲止取得的進展。

可以在某些瀏覽器中訪問JavaScript屬性document.documentElement.outerHTML,例如, Safari和Chrome,但不在Firefox中。這會告訴你DOM操作的結果,但不會給你完整的頁面源代碼。如果你注入了一些JavaScript來存儲document.documentElement.outerHTML的值,那麼你應該能夠讓Selenium在W3C Validator的「直接輸入」textarea中輸入這個值並提交它。爲了使其成爲有效的(X)HTML文檔,您需要預先添加並附加值。我還沒有設法通過Selenium完成所有這些步驟。

在URL(如完成here)前預先「查看源:」適用於某些瀏覽器,例如, Firefox和Chrome,但不在Safari中。它不會顯示DOM操作的結果。我似乎無法讓Selenium IDE打開以「view-source:」開頭的地址,它總是預先設置一個斜線,我不知道如何避免這種情況。

我很想知道人們嘗試了哪些其他方法,以及他們是否取得了成功!

0

嘗試

String html = selenium.getEval("window.document.body.innerHTML"); 

它會給你一個被操縱的Javascript整個當前的DOM HTML。