gpt4 book ai didi

selenium - 为什么在 Protractor 中使用 locator()?

转载 作者:行者123 更新时间:2023-12-01 11:24:14 24 4
gpt4 key购买 nike

来源: http://www.protractortest.org/#/api?view=ElementArrayFinder.prototype.locator

// returns by.css('#ID1')
$('#ID1').locator()

// returns by.css('#ID2')
$('#ID1').$('#ID2').locator()

// returns by.css('#ID1')
$$('#ID1').filter(filterFn).get(0).click().locator()

我相信,排除 locator() 也能准确地完成同样的工作;此 API 有任何原因或具体原因吗?

最佳答案

就个人而言,我只是用它来更好地记录错误。即

it('should display the facility name', function () {
var el = element(by.css('div.facilityName'));
expect(el.isDisplayed()).toBe(true, 'Expected element ' + el.locator() + ' to be present and visible';
});

这在我的控制台中返回:

Failures:

1) should display the facility name

Expected false to be true, 'Expected By(css selector, div.facilityName) to be present and visible'.

同样,我将它与一些辅助函数一起使用(我在非 Angular 上使用 Protractor,所以我没有等待可用的 Angular 同步的能力,所以我使用如下辅助函数:

/**
* @description Prevents test execution until the given element is present in the DOM
* @param [el] The element locator [time] The optional max timeout in ms [opts] The options
*/
Util.prototype.waitForElementPresent = function (el, time, opts) {
var timeout = time || 0,
counter = 0,
verbose = opts ? opts.verbose : false;

return browser.wait(function() {
if (verbose) {
process.stdout.write( !counter ? 'waitForElementPresent [' + el.locator() + '] ' : '.');
counter = counter + 1;
}
return el.isPresent();
}, timeout).then(function () {
if (verbose) {
process.stdout.write('\n');
}
});
};

用法:

it('should display the facility name', function () {
var el = element(by.css('div.facilityName'));
Util.waitForPresentAndVisible(el, 10000, {verbose: true});
expect(el.isDisplayed()).toBe(true, 'Expected element ' + el.locator() + ' to be present and visible';
});

这会打印到控制台:

waitForElementPresent [By(css selector, div.facilityName)]..........

这有点微不足道,因为无论如何错误都会包括失败代码的行和索引。但我发现在某些情况下它有助于改进错误记录。

我很好奇其他人是如何使用它的。

关于selenium - 为什么在 Protractor 中使用 locator()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39036949/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com