无法在 Chimp 验收测试中单击离子侧菜单按钮

Posted

技术标签:

【中文标题】无法在 Chimp 验收测试中单击离子侧菜单按钮【英文标题】:Can't click an ion-side-menu button in Chimp acceptance test 【发布时间】:2016-08-20 00:14:54 【问题描述】:

我正在尝试编写一个验收测试,通过打开侧面菜单并单击“注销”按钮将用户注销。黑猩猩在抱怨,Uncaught Error: element not visible。这是我的测试:

it('user can log out @watch', function() 
    //navigates to login form, fills in the form and submits, verifies that we see the hamburger (sidemenu) button.
    loginUser(ROLE_TYPE_ADMIN);

    //click the hamburger menu to slide open (reveal) the side menu
    browser.click("button.ion-navicon");

    //wait for animation to finish
    browser.pause(500);

    //wait for my login button to be recognized
    browser.waitForVisible('.mes-chimp-logout');

    //click the logout button (never gets this far – Uncaught Error: element not visible)
    browser.click('.mes-chimp-logout');
);

我很奇怪,如果我取出 browser.click 行,它会成功,因为这意味着它是可见的,但下面的行抱怨它不可见。

其他一些见解:

如果我将侧边菜单按钮粘贴在前景内容中,在侧边菜单之外,我可以让它成为可点击的 侧边菜单外的前景内容是ion-pane。它使用 translate3d 样式滑动以显示侧边菜单

如何克服此错误并单击注销(或任何侧面菜单)按钮?

【问题讨论】:

可以分享waitForVisible的方法代码吗?? @SaurabhGaur 它在那里,browser.waitForVisible 所以看看那里,可能它正在等待可见性并返回 WebElement 所以不需要再次找到就像browser.waitForVisible('.mes-chimp-logout').click();...:) @SaurabhGaur 不幸的是,这给了我:Uncaught TypeError: browser.waitForVisible(...).click is not a function。我如何知道该浏览器 api 是哪个版本?我看到 WebdriverIO 让我选择我可以查看的文档版本,但我不知道我有哪个版本 应该像这里一样工作:webdriver.io/api/utility/waitForVisible.html - chimp 中的 webdriver.io 版本在这里:github.com/xolvio/sync-webdriverio/blob/master/package.json#L38 【参考方案1】:

事实证明,尽管我只打算在选择器中使用一个元素,但实际上有两个。在运行时,Ionic Framework 似乎对与 ion-side-menu 相关的所有内容进行了一些重复,也许是出于动画目的,我不确定。在所有重复的元素中,一个永远不可见或填充(未填充角度模板)。当您在控制台中执行 $('.mes-chimp-logout') 时,您会看到两个元素出现。当您将鼠标悬停在好的按钮上时,它会突出显示 UI 中的按钮。当您将鼠标悬停在另一个上时,没有任何突出显示,因此它要么与 DOM 分离,要么在屏幕外/在某处不可见(这就是 WebDriverIO 认为它不可见的原因——一个是,一个不是)。我最终这样做了:

//get access to the element id of the second (index 1) copy of the element, the one I know is the visible, populated one.
const logoutBtnElementID = browser.elements('.mes-chimp-logout').value[1].ELEMENT;

//click it, using the target ID
browser.elementIdClick(logoutBtnElementID);

【讨论】:

以上是关于无法在 Chimp 验收测试中单击离子侧菜单按钮的主要内容,如果未能解决你的问题,请参考以下文章

如何在登录后打开离子侧菜单上检查身份验证?

带有嵌套视图的离子侧菜单和选项卡:选项卡嵌套视图的内容未显示

如何处理后退按钮android以退出应用程序并在首页中打开时关闭本机导航侧菜单

如何在主页中打开后退按钮 android 以退出应用程序并关闭反应本机导航侧菜单

Nativescript - 在按钮单击时打开 SideDrawer

单击侧栏菜单时应用程序崩溃