我试图了解如何在量角器测试中关联事件。我在下面有一个最小化的示例,如果包含第二个browser.sleep(browser.sleep(3000)),则测试通过。由于click-event(element(by.tagName('mat-form-field))。click())的承诺现在应该已经解决。我不知道为什么测试没有通过。
是因为在单击之后,即在单击事件之后但在操作完成之前触发了诺言,该承诺已经解决了吗? (显示带延迟的下拉菜单)
如果是这种情况,我应该如何创建一个测试,该测试要等到选择菜单可见后才能继续从菜单中选择一个选项?
相关问题:Selecting a element in a drop-down menu in protractor
import {browser, by, element} from 'protractor';
describe('workspace-project App', () => {
it('should select', () => {
browser.get('http://localhost:4200/test').then(() => {
// browser.sleep(4000);
element(by.tagName('mat-form-field')).click().then(() => {
// browser.sleep(3000);
element.all(by.css('span.mat-option-text')).getText().then((values) => {
element.all(by.css('span.mat-option-text')).filter((elem, index) => {
return elem.getText().then((text) => {
return values[1] === text;
});
}).first().click();
browser.sleep(2000);
});
});
});
});
});
<p>
<mat-form-field>
<mat-select [(value)]="selected">
<mat-option>None</mat-option>
<mat-option value="option1">Option 1</mat-option>
<mat-option value="option2">Option 2</mat-option>
<mat-option value="option3">Option 3</mat-option>
</mat-select>
</mat-form-field>
</p>
答案 0 :(得分:0)
如果要在执行操作之前等待元素,则应使用:http://www.protractortest.org/#/api?view=ProtractorExpectedConditions.prototype.visibilityOf
element.all(by.css('span.mat-option-text')).getText().then((values) => {
element.all(by.css('span.mat-option-text')).filter((elem, index) => {
return elem.getText().then((text) => {
return values[1] === text;
});
}).first().click();
});
这部分代码应被替换。
目前,您正在尝试对getText()
执行ElementArrayFinder
。您可以在ElementFinder
上这样做。
此外,您要遍历那些ElementArrayFinder
两次。
在filter()
中,您定义的是index
,但不要在任何地方使用它。索引是可选参数-如果您不打算使用它-忽略它。
values[1] === text;
-如果您想选择option2
,请尝试:
从“量角器”导入{浏览器,由元素};
describe('workspace-project App', () => {
it('should select', () => {
return browser.get('http://localhost:4200/test').then(() => {
return element(by.tagName('mat-form-field')).click().then(() => {
//add Expected Condition here
return element(by.css('mat-option[value="option2"]')).click();
});
});
});
});
答案 1 :(得分:0)
期望检查元素是否存在于页面的DOM上并且可见。可见性意味着不仅显示元素,而且其高度和宽度都大于0。这与“ invisibilityOf”相反。