App使用H5编写,默认方式找不到元素。启动后获取所有上下文,找到webivew_xxxx的,然后进行切换。
源码:
1 package MyAppium; 2 3 import io.appium.java_client.android.AndroidDriver; 4 import org.openqa.selenium.By; 5 import org.openqa.selenium.WebElement; 6 import org.openqa.selenium.remote.DesiredCapabilities; 7 8 import java.net.MalformedURLException; 9 import java.net.URL;10 import java.util.Set;11 12 /**13 * @Auther:GongXingRui14 * @Date:2018/11/115 * @Description: 测试App应用(H5)16 **/17 public class ZBuyAppTest {18 public static void main(String[] args) throws MalformedURLException, InterruptedException {19 20 DesiredCapabilities capabilities = new DesiredCapabilities();21 capabilities.setCapability("deviceName", "Android Sum");22 capabilities.setCapability("automationName", "Appium");23 capabilities.setCapability("platformName", "Android");24 capabilities.setCapability("noReset", true);25 // 安卓版本号,保持默认即可26 // capabilities.setCapability("platformVersion", "7.0");27 //启动包名,使用SDK的uiautomatorviewer查看28 capabilities.setCapability("appPackage", "cn.com.shopping.halmar");29 capabilities.setCapability("appActivity", "com.weshare.jiekuan.activity.LoadActivity");30 31 AndroidDriver driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);32 Thread.sleep(5000);33 34 // 获取所有窗口35 Setcontexts = driver.getContextHandles();36 System.out.println("所有窗口上下文:" + contexts);37 38 // 切换窗口到WEBVIEW39 driver.context("WEBVIEW_cn.com.shopping.halmar");40 41 WebElement webElement = (WebElement) driver.findElements(By.className("_2G-P4GHfk8agQ8HDMa3Who")).get(1);42 webElement.click();43 Thread.sleep(3000);44 45 String result = driver.findElement(By.className("_3vza4fqJTJUBxJqQm687vB")).getText();46 System.out.println("结果:" + result);47 48 driver.quit();49 }50 }