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);
为什么之前的写法会失败?
你用的&是HTML里用来转义&的字符,当你把它直接放到URL Scheme里时,Appium会把它当作URL的一部分(比如当成参数名的一部分),而不是用来分隔两个参数的符号,自然就无法正确识别lat=10这个参数,最终抛出启动URI的错误。
内容的提问来源于stack exchange,提问作者alk1985
相关产品推荐
相关产品推荐

