//打开测试App
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
desiredCapabilities.setCapability("platformName", "Android");
desiredCapabilities.setCapability("appPackage", "com.tencent.mm");
desiredCapabilities.setCapability("appActivity", "com.tencent.mm.ui.LauncherUI");
// 支持X5内核应用自动化配置
desiredCapabilities.setCapability("recreateChromeDriverSessions", true);
// ChromeOptions使用来定制启动选项,因为在appium中切换context识别webview的时候,
// 把com.tencent.mm:toolsmp的webview识别成com.tencent.mm的webview.
// 所以为了避免这个问题,加上androidProcess: com.tencent.mm:toolsmp
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("androidProcess", "com.tencent.mm:appbrand0");
desiredCapabilities.setCapability(ChromeOptions.CAPABILITY, options);
// 初始化会默认将chrome浏览器打开,需要将Browser置为空
desiredCapabilities.setBrowserName("");
//添加noReset 不清除数据 值取布尔值
//默认不加的值为false 一定要注意:不加的话后果很严重,把微信的数据全部的清掉
desiredCapabilities.setCapability("noReset", true);
URL remoteUrl = new URL("http://localhost:4723/wd/hub");
driver = new AndroidDriver(remoteUrl, desiredCapabilities);
driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
Thread.sleep(10000);
//下拉==向下滑动
swipeDown(600);
//选择小程序
driver.findElement(MobileBy.AndroidUIAutomator("new UiSelector().text(\"apple2软件…\")")).click();
Thread.sleep(6000);
//切换context
System.out.println(driver.getContextHandles());
//选择context的时候:context名字是包含之前查询到的小程序进程名
driver.context("WEBVIEW_com.tencent.mm:appbrand0");
//因为小程序开启之后会连带打开三个web窗口,所以我们需要切换到对应正确的窗口中去
//每一个窗口会有对应的句柄(标识) 三个句柄
Set handles = driver.getWindowHandles();
for(String handle:handles){
if(driver.getTitle().equals("apple2购物商城")){
break;
}
//切换句柄
driver.switchTo().window(handle);
}
//定位小程序页面元素
driver.findElement(By.xpath("//a[text()='商品(103)']")).click();