【问题标题】:Appium driver is fetching different url than current page url when i switched from native to webview context in iOS appium当我在 iOS appium 中从本机切换到 webview 上下文时,Appium 驱动程序正在获取与当前页面 url 不同的 url
【发布时间】:2019-07-22 01:41:48
【问题描述】:
  • 当我从本机上下文切换到 webview 上下文时,有时它 获取与当前 url 不同的 url,但有时会获取 正确的网址
  • 我已经等待,但同样的问题即将到来

  • 当appium驱动获取不同的url测试会失败

  • 在 iOS 应用中,webview 是使用 WKWEBVIEW 开发的

注意:android 应用程序中的相同 webview 正常工作

我无法确定问题,是Appium驱动问题还是WKWEBVIEW问题,如果有人知道这个问题的原因,请帮我解决问题

DesiredCapabilities capabilities = new DesiredCapabilities();       
    capabilities.setCapability("platformVersion", "11.2");
    capabilities.setCapability("platformName", "iOS");
    capabilities.setCapability("deviceName", "iPhone 7");
    capabilities.setCapability("app", ""); // app path
    capabilities.setCapability("automationName", "XCUITest");
    capabilities.setCapability("instrumentApp", true);//added now
    capabilities.setCapability(MobileCapabilityType.UDID, "75C77542-36B8-4E6F-86C7-904237C8CB82");
    capabilities.setCapability(IOSMobileCapabilityType.BUNDLE_ID, ""); //a.b.com
    capabilities.setCapability("showXcodeLog", true);
    capabilities.setCapability("cssSelectorsEnabled", true);
    capabilities.setCapability("nativeEvents", true);
    capabilities.setCapability("nativeWebTap", true);



    return capabilities;

Appium 版本:1.9.1

appium驱动切换到不同url时的Appium日志

appium logs

iOS logs appium

【问题讨论】:

    标签: java appium wkwebview appium-ios


    【解决方案1】:

    @amit,嗨。

    我在这里推荐几个选项:

    1) 您能否分享一下您用于初始化会话的功能? 你instrument your application吗?

    dc.setCapability("instrumentApp",true)
    

    2) 出现了类似的问题here。请检查您当前使用的版本。

    有一个新的测试版。请尝试一下(npm uninstall -g appium && npm install -g appium@beta)。

    @imurchie 我已经确认 1.8.2-beta 确实安装了 v3.12.0 appium-remote-debugger 和我可以成功切换到 webviews !一世 将在我的应用程序上运行一个完整的回归,看看我是否遇到任何 问题。

    希望这会有所帮助, 如果您的问题仍然存在,请告诉我。

    3) 2019/03/07 更新 @amit,需要看看你是如何在代码实现中从原生切换到 webview 的。在我过去的项目中,我使用了以下方法(基于 AppiumDriver):

    Set<String> contextNamez = driver.getContextHandles(); for (String singleContext : contextNamez) {
    log.info(singleContext); //smth like NATIVE_APP, WEBVIEW_com.example.android etc.. } String newContext = contextNamez.toArray()[1].toString(); driver.context(newContext);// sets context to WEBVIEW_com.example.android

    //使用

    切换回Native上下文

    driver.context(NATIVE_APP);

    我查看了你的日志。对我来说有点奇怪的是 INFO 和 DEBUG 级别的日志。我没有看到任何错误或异常。请您仔细检查 adb logcat 中是否有任何异常?

    提前致谢, 尤金

    【讨论】:

    • 我尝试了上述功能,但它的行为仍然相同
    • @amit,能否请您提供您使用的 appium 版本?
    • appium 版本 1.9.1
    • 我附上了appium日志,它显示了两个webviews,但有时它没有切换到具有最新PID的webview
    • @amit,还有一些假设。更新了我的答案。
    猜你喜欢
    • 1970-01-01
    • 2015-09-24
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    • 2019-07-19
    • 2011-06-17
    相关资源
    最近更新 更多