2013-04-29 87 views
5

我有寫Selenium測試來檢查我的應用程序的問題。我想測試的是當用戶鍵入正確的登錄名/密碼,顯示正確的頁面並且用戶已登錄。Selenium沒有看到AngularJS頁面元素

主要問題是我的登錄表單是作爲AngularJS指令生成的(我有兩個不同的登錄頁面,這個指令在這兩個地方被重用),而Selenium似乎無法看到這個指令生成的標記中的元素。 什麼是最重要的,測試通過此頁面之前,我已經取代常規標記與指令生成。

所以它看起來像Selenium不能看到由指令生成的html元素。

任何建議我怎麼能克服這個問題?除了當然還原這個改變引入指令:)

+0

我有完全相同的問題。我有一個角網站,我試圖測試,但是當我運行junit測試時,找不到元素。我試過各種元素定位器。沒有工作。 – Automationtested 2015-11-17 02:18:30

回答

1

好的發現,它看起來就像是我蓋布濫用硒。我沒有指定默認驅動程序,Geb選擇了一個與AngularJS不兼容的驅動程序。在我手動將驅動程序更改爲Chrome後,一切都開始奏效。

1

頁面源將顯示該模板之前已由Angular編譯。您應該能夠使用Chrome的開發人員控制檯查看編譯後的模板:右鍵單擊某個元素並選擇「檢查元素」將其打開。

driver.getPageSource()將失敗出於同樣的原因(它獲得的未編譯模板),但driver.findElement()應該工作得很好。

<input id="username" type="text" ng-model="foo"/> 

應該使用

driver.findElement(By.id("username")); 
+0

不幸的是,事實並非如此。我編輯的問題更清楚。問題是,我的測試是通過在此頁面上我已經添加了這個指令生成的標記。 – 2013-04-30 06:14:49

相關問題