我有一些使用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即可。 –