• @limit 问题处理好了不? 帮看看是什么问题, 谢谢。

    开发环境:
    windows10 + appium-desktop1.5.0 + 小米 5plus(android7.0) + chromedriver=2.26

    源码:

    public static void main(String[] args) throws InterruptedException, MalformedURLException {
    // TODO Auto-generated method stub

    AndroidDriver driver = null;

    //设置 apk 的路径
    File clasPathRoot = new File(System.getProperty("user.dir"));
    File appDir = new File(clasPathRoot, "apps");
    File app = new File(appDir, "weixin_1300.apk");// app 安装包

    DesiredCapabilities capabilities = new DesiredCapabilities();

    capabilities.setCapability("platformVersion", "7.0");
    capabilities.setCapability("deviceName", "3bf6f87e");//真机
    capabilities.setCapability("platformName", "Android");

    capabilities.setCapability("appPackage", "com.tencent.mm");
    capabilities.setCapability("appActivity", "com.tencent.mm.ui.LauncherUI");

    capabilities.setCapability("noReset", true);// 不重装 app
    capabilities.setCapability("noSign", true);// 不进行重签名

    capabilities.setCapability("sessionOverride", true);
    // 权限
    capabilities.setCapability("autoGrantPermissions", true);

    // 设置 apk 路径
    capabilities.setCapability("app", app.getAbsolutePath());

    //加入微信 webwiew 调试能力. ===== 加下面这几句就出错了。
    ChromeOptions options2 = new ChromeOptions();
    options2.setExperimentalOption("androidProcess", "com.tencent.mm:tools");
    capabilities.setCapability(ChromeOptions.CAPABILITY, options2);

    driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);

    }

    报错如下:

    Exception in thread "main" org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Failed to start Chromedriver session: An unknown server-side error occurred while processing the command. (Original error: unknown error: Failed to clear data for com.android.chrome on device 3bf6f87e: Error: java.lang.SecurityException: PID 19864 does not have permission android.permission.CLEAR_APP_USER_DATA to clear data of package com.android.chrome

    (Driver info: chromedriver=2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30),platform=Windows NT 10.0.15063 x86_64)) (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 47.67 seconds
    Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:33:15.31Z'
    System info: host: 'JIANGNENGTING', ip: '192.168.18.254', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'
    Driver info: driver.version: AndroidDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53)
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
    at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
    at java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
    at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.util.stream.ReferencePipeline.findFirst(Unknown Source)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
    at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:129)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545)
    at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
    at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
    at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:209)
    at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:132)
    at io.appium.java_client.DefaultGenericMobileDriver.(DefaultGenericMobileDriver.java:38)
    at io.appium.java_client.AppiumDriver.(AppiumDriver.java:84)
    at io.appium.java_client.AppiumDriver.(AppiumDriver.java:94)
    at io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:79)
    at com.jnt.csair.weixin.H5Weixin.main(H5Weixin.java:59)

  • 原码如下: 有知道的兄弟们不.

    import java.net.MalformedURLException;
    import java.net.URL;
    import java.util.concurrent.TimeUnit;

    import org.apache.log4j.Logger;
    import org.openqa.selenium.By;
    import org.openqa.selenium.WebElement;
    import org.openqa.selenium.chrome.ChromeOptions;
    import org.openqa.selenium.remote.DesiredCapabilities;

    import io.appium.java_client.android.AndroidDriver;

    public class H5Weixin {

    private static Logger logger = Logger.getLogger(H5Weixin.class);

    public static void main(String[] args) throws InterruptedException, MalformedURLException {
    // TODO Auto-generated method stub
    AndroidDriver driver = null;
    DesiredCapabilities capability = null;

    capability = new DesiredCapabilities();
    capability.setCapability("app", "");
    capability.setCapability("appPackage", "com.tencent.mm");
    capability.setCapability("appActivity", ".ui.LauncherUI");
    capability.setCapability("deviceName", "3bf6f87e");
    capability.setCapability("fastReset", "false");
    capability.setCapability("fullReset", "false");
    capability.setCapability("noReset", "true");
    // capability.setCapability("unicodeKeyboard", "True");
    // capability.setCapability("resetKeyboard", "True");

    // 关键是加上这段
    ChromeOptions options2 = new ChromeOptions();
    options2.setExperimentalOption("androidProcess", "com.tencent.mm:tools");
    capability.setCapability(ChromeOptions.CAPABILITY, options2);

    // 启动微信浏览器
    logger.info("启动微信浏览器");

    driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capability);

    // driver.manage().timeouts().implicitlyWait(500, TimeUnit.MILLISECONDS);
    // Thread.sleep(5000);
    //
    // logger.info("点击微信搜索菜单");
    // WebElement webElement = driver.findElement(By.xpath("//[@content-desc='搜索']"));
    // webElement.click();
    // logger.info("输入文件字符串");
    // webElement = driver.findElement(By.xpath("//
    [@text='搜索']"));
    // webElement.click();
    // webElement.clear();
    // webElement.sendKeys("文件");
    // Thread.sleep(5000);
    // logger.info("点击文件传输助手");
    // webElement = driver.findElement(By.xpath("//*[@text='文件传输助手']"));
    // webElement.click();
    // Thread.sleep(5000);
    // logger.info("发送跳转网站的网页 URL");

    // webElement = driver.findElement(By.xpath("//[@resource-id='com.tencent.mm:id/z4']"));// 不同微信版本,定位不一样
    // webElement.sendKeys("http://192.168.1.103:8080/openurl/open.html");
    // logger.info("点击发送按钮");
    // webElement = driver.findElement(By.xpath("//
    [@text='发送']"));
    // webElement.click();
    // Thread.sleep(5000);
    // logger.info("点击网址");
    // webElement = driver.findElement(By.xpath("//*[@text='" + "http://192.168.1.103:8080/openurl/open.html" + "']"));
    // webElement.click();
    // Thread.sleep(5000);
    // logger.info("切换到微信 webView");

    // Webdriver 转 AndroidDriver
    AndroidDriver androidDriver = (AndroidDriver) driver;
    androidDriver.context("WEBVIEW_com.tencent.mm:tools");
    driver = androidDriver;

    }

    }

  • 楼主我用你微信那块代码运行报如下错,不知道什么原因。chromedriver 版本换了 chromedriver=2.26, chromedriver=2.33,chromedriver=2.38 都不行

    [INFO ] 2018-04-19 11:48:52,751 method:com.jnt.csair.weixin.H5Weixin.main(H5Weixin.java:41)
    启动微信浏览器
    Exception in thread "main" org.openqa.selenium.WebDriverException: An unknown server-side error occurred while processing the command. Original error: Failed to start Chromedriver session: An unknown server-side error occurred while processing the command. (Original error: unknown error: known package com.android.chrome does not accept activity/process
    (Driver info: chromedriver=2.26.436362 (5476ec6bf7ccbada1734a0cdec7d570bb042aa30),platform=Windows NT 10.0.15063 x86_64)) (WARNING: The server did not provide any stacktrace information)
    Command duration or timeout: 23.01 seconds
    Build info: version: '3.11.0', revision: 'e59cfb3', time: '2018-03-11T20:33:15.31Z'
    System info: host: 'JIANGNENGTING', ip: '192.168.18.254', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_131'
    Driver info: driver.version: AndroidDriver
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:214)
    at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:166)
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$new$0(JsonWireProtocolResponse.java:53)
    at org.openqa.selenium.remote.JsonWireProtocolResponse.lambda$getResponseFunction$2(JsonWireProtocolResponse.java:91)
    at org.openqa.selenium.remote.ProtocolHandshake.lambda$createSession$0(ProtocolHandshake.java:123)
    at java.util.stream.ReferencePipeline$3$1.accept(Unknown Source)
    at java.util.Spliterators$ArraySpliterator.tryAdvance(Unknown Source)
    at java.util.stream.ReferencePipeline.forEachWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyIntoWithCancel(Unknown Source)
    at java.util.stream.AbstractPipeline.copyInto(Unknown Source)
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(Unknown Source)
    at java.util.stream.FindOps$FindOp.evaluateSequential(Unknown Source)
    at java.util.stream.AbstractPipeline.evaluate(Unknown Source)
    at java.util.stream.ReferencePipeline.findFirst(Unknown Source)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:136)
    at io.appium.java_client.remote.AppiumCommandExecutor.execute(AppiumCommandExecutor.java:129)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:545)
    at io.appium.java_client.DefaultGenericMobileDriver.execute(DefaultGenericMobileDriver.java:42)
    at io.appium.java_client.AppiumDriver.execute(AppiumDriver.java:1)
    at io.appium.java_client.android.AndroidDriver.execute(AndroidDriver.java:1)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:209)
    at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:132)
    at io.appium.java_client.DefaultGenericMobileDriver.(DefaultGenericMobileDriver.java:38)
    at io.appium.java_client.AppiumDriver.(AppiumDriver.java:84)
    at io.appium.java_client.AppiumDriver.(AppiumDriver.java:94)
    at io.appium.java_client.android.AndroidDriver.(AndroidDriver.java:79)
    at com.jnt.csair.weixin.H5Weixin.main(H5Weixin.java:42)