【问题标题】:CSS Locator not recognising an element in Protractor Test?CSS Locator 无法识别 Protractor 测试中的元素?
【发布时间】:2020-07-30 15:55:44
【问题描述】:

在下面的量角器测试中,我尝试使用 CSS 定位器计算 div 的数量:

let list = element.all(by.css('div[class="ag-header-cell ag-header-cell-sortable"]'));
expect(list.count()).toBe(11);

从下面的屏幕截图中可以看出,这个类有 11 个 div,但由于某种原因,我的测试只计算了 10 个。所以我的测试失败并出现以下错误消息:

预计 10 为 11

为了查看哪个 div 未被识别,我记录了每个 div 的文本:

element.all(by.css('div[class="ag-header-cell ag-header-cell-sortable"]')).each((it) => {
    it.getText().then((text) => {
        console.log('Text', text);
    })
})

col-id='Ni' 的 div 因某种原因未被识别,即使它确实具有我在测试中指定的 CSS 类。

谁能告诉我为什么会这样?

【问题讨论】:

  • 我可以假设在您执行count 时页面没有完全加载。试着给它更长的等待时间
  • 嗨@SergeyPleshakov 我在发布之前尝试过,但只是为了确保我在分配列表变量之前添加了browser.sleep(20000);,但仍然收到相同的错误消息。
  • 超级奇怪,可能是你的脚本有错误。这个页面可以公开访问吗?我去看看
  • 我知道@SergeyPleshakov,它把我逼疯了:) 我下面的答案是检索所有值,这让它变得更加奇怪!不幸的是,它在用户名和密码后面,所以我无法分享它

标签: css angular jasmine protractor


【解决方案1】:

我设法让定位器使用此功能:

element.all(by.css('div.ag-header-cell'))
    .map(function (cell) {
        return cell.getText();
    })
    .then(function (cellValues) {
        expect(cellValues).toEqual(["1st Expected Result", "2nd Expected Result"]);
});

这捕获了我使用问题中的代码无法获得的所有 11 个值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-30
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    相关资源
    最近更新 更多