gpt4 book ai didi

javascript - Protractor 清除()不工作

转载 作者:行者123 更新时间:2023-12-03 12:27:19 24 4
gpt4 key购买 nike

我有两个测试:

  it('should filter the phone list as user types into the search box', function() {

var results = ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name'));
results.then(function(arr) {
expect(arr.length).toEqual(3);
});

var queryInput = ptor.findElement(protractor.By.input('query'));

queryInput.sendKeys('nexus');

results = ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name'));
results.then(function(arr) {
expect(arr.length).toEqual(1);
});

queryInput.clear();
queryInput.sendKeys('motorola');

results = ptor.findElements(protractor.By.repeater('phone in phones').column('phone.name'));
results.then(function(arr) {
expect(arr.length).toEqual(2);
});

});

it('should display the current filter value within an element with id "status"',
function() {
//expect(element('#status').text()).toMatch(/Current filter: \s*$/);
var queryInput = ptor.findElement(protractor.By.input('query'));
queryInput.clear();

expect(ptor.findElement(protractor.By.id('status')).getText()).toMatch('Current Filter:');

//input('query').enter('nexus');

//queryInput.clear();
//queryInput.sendKeys('nexus');

//expect(element('#status').text()).toMatch(/Current filter: nexus\s*$/);
//expect(ptor.findElement(protractor.By.id('status')).getText()).toMatch('^\Current Filter:.');

//alternative version of the last assertion that tests just the value of the binding
//using('#status').expect(binding('query')).toBe('nexus');
});

第一个测试,搜索框,效果很好。
第二个测试 status 没有通过,因为在 queryInput 中输入的最后一个值被传递到第二个测试,并且 queryInput.clear() 不起作用。
但是,在第二个测试中,如果我调用 queryInput.sendKeys("something"),则会显示“something”。
如果我在第二个测试中取出 clear(),我会看到“motorolaso​​mething”。
因此,虽然 clear() 似乎在工作,但如果我在第二个测试中只有 clear(),我的测试没有通过,当我运行第二个测试时,即使调用 clear(),我也会看到“motorola”在第二次测试之前。

我想知道为什么当我没有 sendKeys() 之后, clear() 没有在第二次测试中清除。

最佳答案

clear() 的文档说明如下:

[ !webdriver.promise.Promise ] clear( )

Schedules a command to clear the {@code value} of this element. This command has no effect if the underlying DOM element is neither a text INPUT element nor a TEXTAREA element.

Returns: A promise that will be resolved when the element has been cleared.



所以为了清楚地做你想做的事,你必须遵守它返回的 promise !为此,您必须使用 then()
下面是它的工作原理:
queryInput.clear().then(function() {
queryInput.sendKeys('motorola');
})

所以 clear()返回您清除输入的 promise 和 then()一旦输入被清除,就告诉 Promise 要做什么。

关于javascript - Protractor 清除()不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19966240/

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