博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
appium for hybrid app 处理webview
阅读量:6256 次
发布时间:2019-06-22

本文共 3652 字,大约阅读时间需要 12 分钟。

 

之前研究了一段时间的appium for native app 相应的总结如下:

                                               appium测试环境搭建 :

                    知乎Android客户端登陆:

                                                  appium实现截图和清空EditText:

                                                  appium 滑动处理:

                  Android pure web driver appium for mobile web 之使用 ChromeDriver:

                                               :

这里使用的依然是知乎客户端,当使用第三方账户登陆时候会跳转weibo验证的API,使用UIAutomatior打开效果如下

可以看出该登陆框是webview

所以应该可以通过切换context实现Native app 和Webview切换

1     Set
context = driver.getContextHandles();2 for (String contextName : context) {3 System.out.println(contextName);4 5 }6 driver.context("WEBVIEW");

万万没想到,appium压根没找到相应的Webview

只有NATIVE_APP

这说明,其实webview是可以和app一样去识别

接下来就可以这样做

public class dealWebView {    private AndroidDriver
driver; private boolean isInstall = false; private String userName="youremail"; private String password="yourpassword"; /** * @author Young * @throws IOException */ public void startRecord() throws IOException { Runtime rt = Runtime.getRuntime(); // this code for record the screen of your device rt.exec("cmd.exe /C adb shell screenrecord /sdcard/runCase.mp4"); } @BeforeClass(alwaysRun = true) public void setUp() throws Exception { // set up appium DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(CapabilityType.BROWSER_NAME, ""); capabilities.setCapability("platformName", "Android"); capabilities.setCapability("deviceName", "Android Emulator"); capabilities.setCapability("platformVersion", "5.1"); // if no need install don't add this if (isInstall) { File classpathRoot = new File(System.getProperty("user.dir")); File appDir = new File(classpathRoot, "apps"); File app = new File(appDir, "zhihu.apk"); capabilities.setCapability("app", app.getAbsolutePath()); } capabilities.setCapability("appPackage", "com.zhihu.android"); // support Chinese capabilities.setCapability("unicodeKeyboard", "True"); capabilities.setCapability("resetKeyboard", "True"); // no need sign capabilities.setCapability("noSign", "True"); //capabilities.setCapability("autoWebview", "True"); capabilities.setCapability("appActivity", ".ui.activity.GuideActivity"); driver = new AndroidDriver
(new URL( "http://127.0.0.1:4723/wd/hub"), capabilities); startRecord(); } @Test public void loginWithMicroBlog() throws InterruptedException { driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); // swipe to right driver.findElementById("com.zhihu.android:id/login_and_register") .click(); driver.findElementById("com.zhihu.android:id/btn_social").click(); driver.findElementById("com.zhihu.android:id/login_weibo").click(); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); Thread.sleep(15000); Set
context = driver.getContextHandles(); for (String contextName : context) { System.out.println(contextName); }// driver.context("WEBVIEW"); System.out.println(driver.getPageSource()); driver.findElementsByClassName("android.widget.EditText").get(0).sendKeys( userName); driver.findElementsByClassName("android.widget.EditText").get(1).sendKeys( password); driver.findElementByXPath("//android.view.View[contains(@content-desc,'登录')]").click(); } @AfterClass(alwaysRun = true) public void tearDown() throws Exception { driver.quit(); }}

效果如下:

 

转载地址:http://bzxsa.baihongyu.com/

你可能感兴趣的文章
Java 读取 .properties 配置文件
查看>>
IntelliJ IDEA 12 key from twitter
查看>>
css
查看>>
装饰设计模式
查看>>
《Linux内核原理与分析》第八周作业
查看>>
企业级工作流解决方案(二)--微服务总体介绍
查看>>
Bonbo Git Server
查看>>
取消文件默认打开方式
查看>>
JVM 调试工具
查看>>
Linux C 语言 获取系统时间信息
查看>>
pku 1182 食物链
查看>>
echarts使用笔记四:双Y轴
查看>>
删除操作系统服务(Delete OS Service)
查看>>
effective JAVA 阅读笔记。
查看>>
Core Data: 多线程大量数据同步
查看>>
二分法查找
查看>>
浏览器推荐 --- 搜狗浏览器
查看>>
感冒 类型
查看>>
DataGridView 清空数据
查看>>
iis网站发布相关问题
查看>>