TA的每日心情 | 郁闷 2022-8-29 14:43 |
---|
签到天数: 1 天 连续签到: 1 天 [LV.1]测试小兵
|
2#
楼主 |
发表于 2018-2-23 16:20:36
|
只看该作者
百度一下button的元素信息
通过id定位:
- WebElement searchButton = driver.findElement(By.id(“index-bn”));
复制代码 百度搜索关键字的代码:
- public AndroidDriver<WebElement> driver;
- @BeforeClass
- public void startTest() throws MalformedURLException {
- DesiredCapabilities capabilities = new DesiredCapabilities();
- capabilities.setCapability("platformName","Android");
- capabilities.setCapability("deviceName","MeiZu MX3");
- capabilities.setCapability("platformVersion", "5.0.1");
- capabilities.setCapability("browserName", "Chrome");
- driver = new AndroidDriver<WebElement>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
- driver.manage().timeouts().implicitlyWait(6, TimeUnit.SECONDS);
- }
- @AfterClass
- public void afterClass() {
- driver.quit();
- }
- @Test
- public void addContact() {
- //打开百度首页
- driver.get("https://www.baidu.com");
- //输入框元素
- WebElement inputBox = driver.findElement(By.id("index-kw"));
- //输入JAVA关键字
- inputBox.sendKeys("JAVA");
- //百度一下按钮
- WebElement searchButton = driver.findElement(By.id("index-bn"));
- //点击百度一下按钮
- earchButton.click();
- try {
- Thread.sleep(2000);
- } catch (InterruptedException e) {
- e.printStackTrace();
- }
- }
复制代码 2.1chrome toggle device mode 模式
打开PC chrome浏览器,点击F12
点击toggle device mode,F5刷新就可以实现方式1的效果,而且比方式1简单。
可以切换设备型号及屏幕的大小。
3.定位混合应用元素
混合应用是原生APP+webview组成的,可以简单的理解为一个原生app的外壳,内部全是html页面。
在处理这样的app的定位的时候 需要先定位原生APP上的按钮或者链接,然后点击按钮或者链接,
然后经过appium提供的方法,进入webview页面,通过之前介绍的定位工具和方法进行元素定位了。
如果说你的android版本小于4.4,那么你需要使用Selendroid模式来作为测试引擎,在测试初始化的
时候需要设置该capability。如果你的android版本大于等于4.4,那么Appium作为测试引擎,然后通
过chromedriver来处理webview。如果你使用的是APPIUM测试引擎,调试WebView需要满足安卓系
统版本为Android 4.4+已上,并且需要在你的APP内配置相应的代码,在WebView类中调用静态方
法setWebContentsDebuggingEnabled,如下:
if (Build.VERSION.SDK_INT >=Build.VERSION_CODES.KITKAT) {
WebView.setWebContentsDebuggingEnabled(true);
}
进入webview的操作:
- //这里使用driver.getContextHandles();获取app的handles,原生应用会有一个handle,webview也会有一个handle
- Set<String> contexts = driver.getContextHandles();
- for(String cotext:contexts) {
- System.out.println(context);
- //会打印出 NATIVE_APP(原生app handle)和WEBVIEW_com.example.testapp(webview的 handle)
- }
- //进入webview中
- driver.context((String) contexts.toArray()[1]);
- //操作webview中的内容
复制代码 这里使用driver.getContextHandles();获取app的所有handles,原生应用会有一个NATIVE_APP 的handle,
webview也会有一个WEBVIEW_XXX_XXX_XX的handle,确定了webview的handle之后,使用:
driver.context(handle的字符串)进入webview页面
|
|