【问题标题】:Writing Appium Nightwatch tests for Cordova React hybrid apps为 Cordova React 混合应用程序编写 Appium Nightwatch 测试
【发布时间】:2016-12-09 19:22:13
【问题描述】:

我不知道如何编写夜间 Appium 测试。如果 nightwatch 已经通过浏览器对象,如何获取驱动对象?

这是我目前所拥有的:

export default module.exports = {
    'Displays error page`': (browser) => 
    browser
    // .url(`${browser.launchUrl}`)
    .pause(10000)
    .waitForElementVisible('.error-page .title')
    .assert.containsText('.error-page .title', 'Oops! Wrong url.')
    .end(),
};

我在 SauceLabs 上运行它,但它在 .waitForElementVisible('.error-page .title') 失败

任何帮助将非常感谢!

【问题讨论】:

    标签: cordova appium nightwatch.js saucelabs


    【解决方案1】:

    试试 xpath:

     export default module.exports = {
        'Displays error page`': (browser) => 
        browser
        // .url(`${browser.launchUrl}`)
        .useXpath()
        .pause(10000)
        .waitForElementVisible('.error-page .title') // switch to xpath()
        .assert.containsText('.error-page .title', 'Oops! Wrong url.')
        .end(),
    };
    

    Nightwatch 具有良好的页面对象结构,我在上周尝试使用 nightwatch 和 appium 并不能很好地协同工作,尤其是多页面移动应用程序。我认为您应该找到另一个与 Appium 一起使用的库,我也在寻找它

    【讨论】:

    • 感谢您的帮助。检查我发布的答案,这是我用来运行 nightwatch + appium 测试的方法
    【解决方案2】:

    我想通了。

    export default module.exports = {
        'Get ABC Title': browser =>
          browser.contexts(function(context) {
            browser.setContext(context['value'][1])
          })
            .waitForElementVisible('.event-cards')
            .assert.containsText('.event-card h2.title', 'ABC')
            .end(),
    };
    

    由于 Cordova 包装了 DOM 元素。我们需要一种访问这些元素的方法来测试它们。 调用browser.contexts 会为您提供可用上下文的数组,即['NATIVE', 'WEBVIEW']。 现在您所要做的就是设置浏览器对象browser.setContext(context['value'][1]) 的上下文。

    【讨论】:

      猜你喜欢
      • 2017-05-14
      • 1970-01-01
      • 2015-12-20
      • 2018-06-04
      • 2019-03-16
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多