Javascript 无法使用ionic2上带有量角器的元素(by.css())单击按钮
我可以导航到该页面,但在导航页面上,我尝试单击显示错误的按钮,如下所示:Javascript 无法使用ionic2上带有量角器的元素(by.css())单击按钮,javascript,css,ionic2,protractor,angular2-testing,Javascript,Css,Ionic2,Protractor,Angular2 Testing,我可以导航到该页面,但在导航页面上,我尝试单击显示错误的按钮,如下所示: × navigates to the next page on click - Failed: unknown error: Element <button color="primary" id="button" ion- button="" large="" ng-reflect-color="primary" ng-reflect-large="" class="button button-md button
× navigates to the next page on click
- Failed: unknown error: Element <button color="primary" id="button" ion-
button="" large="" ng-reflect-color="primary" ng-reflect-large="" class="button
button-md button-default button-default-md button-large button-large-md button-
md-primary">...</button> is not clickable at point (121, 109). Other element
would receive the click: <div class="click-block click-block-enabled click-
block-active"></div>
你可以看看我的评论,哪些有效,哪些无效。经过更多的努力和搜索,我找到了问题的解决方案,也许有人会发现它有用 因为量角器非常快速和异步,所以有时它无法检测到我们要单击的元素。在我的例子中,它无法定位我必须单击的按钮元素 在处理非角度应用程序时,我们使用
ExpectedConditions
,它表示对量角器有用的罐装预期条件库
重构我的上述测试规范:
it('navigates to the next page on click', () => {
browser.get('http://localhost:8100');
let elemen = element(by.css('ion-content button'));
elemen.click();
let pageChecks = element(by.buttonText('Click to Forms'));
let EC = protractor.ExpectedConditions;
// let button = element(by.css('#button'));
let button = $('#button');
let clickable = EC.elementToBeClickable(button);
browser.wait(clickable, 5000);
button.click();
let ele = $$('#form');
let text = ele.getText().then((value)=>{
console.log(value),
expect(value).toContain('Forms');
expect(value).toContain('');
});
});
这就解决了我的问题。用,来获得一些想法
it('navigates to the next page on click', () => {
browser.get('http://localhost:8100');//opening the app
let elemen = element(by.css('ion-content button'));
let click = elemen.click();//clickin the button successfully and navigating to other page.
let pageChecks = element(by.buttonText('Click to Forms'));//on otherpage select the button.
pageChecks.click();//clicking the button but fails to locate the button.
});
it('navigates to the next page on click', () => {
browser.get('http://localhost:8100');
let elemen = element(by.css('ion-content button'));
elemen.click();
let pageChecks = element(by.buttonText('Click to Forms'));
let EC = protractor.ExpectedConditions;
// let button = element(by.css('#button'));
let button = $('#button');
let clickable = EC.elementToBeClickable(button);
browser.wait(clickable, 5000);
button.click();
let ele = $$('#form');
let text = ele.getText().then((value)=>{
console.log(value),
expect(value).toContain('Forms');
expect(value).toContain('');
});
});