You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Appium driver.get方法不支持&符号,带参数URL Scheme调用失败

解决Appium调用带多参数URL Scheme失败的问题

我之前也碰到过一模一样的问题!你现在的核心问题是误用了HTML转义字符&来代替URL标准的参数分隔符&,这才导致Appium解析URI时出错。

直接有效的解决方案:

  • 用原始&拼接参数:把你的URL里的&换成&,直接传递正常格式的URL Scheme就行,比如:

    driver.get("abc-xx://qa-preview?adunit=banner&lat=10");
    

    放心,代码里的字符串直接写&是完全没问题的,不需要额外转义。

  • 如果还是有问题,试试专用的深度链接API:Appium提供了mobile: deepLink执行器,专门用来处理深度链接/URL Scheme,比driver.get()更可靠,用法如下:

    Map<String, String> deepLinkParams = new HashMap<>();
    deepLinkParams.put("url", "abc-xx://qa-preview?adunit=banner&lat=10");
    deepLinkParams.put("package", "com.your.app.package"); // 替换成你的App包名
    driver.executeScript("mobile: deepLink", deepLinkParams);
    
  • 参数值含特殊字符时的编码处理:如果你的参数值里包含空格、&这类特殊字符,记得单独对参数值做URL编码,避免解析混乱:

    String encodedAdunit = URLEncoder.encode("banner-with-special&char", "UTF-8");
    String encodedLat = URLEncoder.encode("10.5", "UTF-8");
    String targetUrl = "abc-xx://qa-preview?adunit=" + encodedAdunit + "&lat=" + encodedLat;
    driver.get(targetUrl);
    

为什么之前的写法会失败?

你用的&amp;是HTML里用来转义&的字符,当你把它直接放到URL Scheme里时,Appium会把它当作URL的一部分(比如当成参数名的一部分),而不是用来分隔两个参数的符号,自然就无法正确识别lat=10这个参数,最终抛出启动URI的错误。

内容的提问来源于stack exchange,提问作者alk1985

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:37:07