首页 文章

量角器测试中的离子选项按钮 - 单击未注册

提问于
浏览
1

我有一个离子应用程序,带有onionic-option-button的离子列表 . 当用户向左滑动时,此按钮变为可见 . 我想写一个量角器(Chromedriver&Android&Appium&Protractor测试)测试向左滑动,然后单击按钮 . 滑动没问题,我可以看到按钮变得可见,但点击没有注册 . ion-option-button有一个ng-click事件,可触发事件 . 我试过了:

  • 获取ion-option-button元素并单击它

  • 尝试使用水龙头

  • 试图点击位置,通过 grab 离子项(包含离子选项按钮)并计算离子按钮按钮的位置来计算

  • 使用tapAndHold,等待并释放

  • 使用了browser.driver.touchActions() . tap(element)

我没有得到任何元素不可点击的错误 . 该活动尚未注册;所以它看起来像ion-option-button听另一个事件?

它适用于Javascript:

browser.driver.executeScript('angular.element(document.getElementById("delete-button-0")).triggerHandler("click");');

1 回答

  • 2

    在向左滑动操作后,尝试等待元素可点击:

    var EC = protractor.ExpectedConditions;
    var elm = element(by.id("delete-bu‌​tton-0"));
    
    browser.wait(EC.elementToBeClickable(elm), 5000);
    elm.click();  
    // or browser.actions().touchActions().tap(elm).perform();
    

    或者,您可能需要移动到元素,然后单击(或点击):

    browser.actions().mouseMove(elm).click().perform();
    

    您还可以在点击/点按之前尝试滚动到元素的视图中:

    browser.executeScript("arguments[0].scrollIntoView();", elm.getWebElement());
    

    并且,仅作为最后的手段,如果其他一切都不起作用,请通过javascript单击它:

    browser.executeScript("arguments[0].click();", elm.getWebElement());
    

    此解决方案存在缺陷,请确保您了解其中的差异:

相关问题