我有一个Ionic 6应用程序,我正在用柏树9.3.1测试它。
在我的应用程序中,我使用的离子搜索栏如下:
<ion-searchbar *ngIf="showSearchbar" [value]="search" (search)="searchQuestions($event)"
placeholder="{{'components.search.placeholder' | translate}}">
searchQuestions方法如下所示:
public searchQuestions(event): void {
console.log('test');
this.triggerSearch.emit(event.target.value);
}
当我手动测试它时,一切都很好,但当我执行这样的柏树代码时:
cy.get('.searchbar-input')
.type('test1' + '{leftArrow}{del}{enter}' + 'test');
输入字段中填充了testtest
,因此{leftArrow}{del}
正在工作,但来自searchQuestions
的console.log
没有执行,事件也没有发出
编辑:当我使用(keyup.enter)="searchQuestions($event)"
而不是(search)="searchQuestions($event)"
时,它似乎工作得很好。但我想替换它对原生应用程序来说会有问题,保留两者可能会带来问题。
应用程序或Ionic框架正在添加一个事件处理程序来触发search
事件,但Cypress对此一无所知。
在.type()
命令中,它只发出键盘事件,这就是为什么(keyup.enter)="searchQuestions($event)"
会触发,而(search)="searchQuestions($event)"
不会。
首先要尝试的是
cy.get('.searchbar-input')
.type('test1' + '{leftArrow}{del}{enter}' + 'test')
.trigger('search')
同时尝试触发其他事件,如.trigger('change')
和.trigger('input')
。
另一个可能导致它的原因是类型字符串中间的{enter}
。
试试.type('test1' + '{leftArrow}{del}' + 'test' + '{enter}')
——这似乎更像是用户会使用的模式。