我有一些使用ui-grid的Angular應用程序運行的量角器測試。我對應用程序有一些工作冒煙測試,但我剛開始使用https://github.com/angular-ui/ui-grid/blob/master/test/e2e/gridTestUtils.spec.js來測試ui網格組件來執行測試。我遇到的問題是我需要網格元素的實際ID以便使用getGrid
函數。使用Selenium /量角器找不到角度ui-grid元素的編號
我能夠使用element(by.css("[id$='-grid-container']"))
成功定位元素,但出於某些原因,我試圖從元素中獲取完整ID失敗。這是我想要的:
var grid = element(by.css("[id$='-grid-container']"));
grid.getAttribute('id').then(function(result) {
console.log(result);
var myGrid = gridTestUtils.getGrid(result.toString());
gridTestUtils.expectCellValueMatch(myGrid, 0, 0, 'Cox');
});
console.log(result);
沒有記錄任何東西。它並不一定與ui-grid相關,只是Selenium由於某種原因沒有找到id。據我可以告訴我正確使用getAttribute
;它可以在其他測試中使用這種語法,但也許我錯過了一些東西。任何想法爲什麼這不起作用?
編輯是因爲我的評論不可讀:
感謝您的建議。不過,我還是一樣困惑,因爲
var grid = element(by.css("[id$='-grid-container']"));
console.log(grid.toString());
grid.getAttribute('id').then(function(result) {
console.log('======'+result);
var myGrid = gridTestUtils.getGrid(result.toString());
gridTestUtils.expectCellValueMatch(myGrid, 0, 0, 'Cox');
});
給出
[object Object]
======
所以它似乎像元素的控制檯輸出被發現,我已經檢查和執行console.log承諾內部正在執行。
就好像它找不到'id',根據API文檔表示元素上沒有id。但這絕對不是事實。
猜測它可能是與硒的webdriver把手的方式逃避css(escapeCss方法)? https://github.com/SeleniumHQ/selenium/blob/master/javascript/node/selenium-webdriver/lib/by.js也許添加一個ID標籤找到另一種方式? – cnishina
問題是ID是動態分配的,我需要抓住它才能使用getGrid。更改網頁的設計不是一種選擇,我沒有發現webElement本身的問題,只需使用getAttribute()從元素中獲取ID即可。 –