package com.mooctest;
import io.appium.java_client.AppiumDriver;
import io.appium.java_client.AndroidKeyCode;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.Keys;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.UnreachableBrowserException;
public class Main {
/**
* 所有和AppiumDriver相关的操作都必须写在该函数中
* @param driver
*/
public void test(AppiumDriver driver) {
try {
Thread.sleep(6000); //等待6s,待应用完全启动
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //设置尝试定位控件的最长时间为8s,也就是最多尝试8s
/*
* 余下的测试逻辑请按照题目要求进行编写
*/
// 1. 编写脚本启动应用,将介绍页面滑动至最右端(提示:可使用 driver.swipe
// 函数进行滑动操作),点击屏幕任意一处进入城市选择页面 ,在搜索框中输
// 入南京,点击南京进入应用主页面
driver.swipe(820, 630, 70, 630, 800);
driver.swipe(820, 630, 70, 630, 800);
driver.findElementById("android:id/content").click();
driver.findElementById("com.anjuke.android.app:id/edittext").sendKeys("南京");
driver.findElementById("com.anjuke.android.app:id/select_city_tv_item").click();
// 8 点击推荐,进入推荐模块,对于图示模块进行遍历,仅要求到达,不要求进一
// 步测试
//消息
driver.findElementByXPath("//android.widget.TextView[@text='消息']").click();
//推荐
driver.findElementByXPath("//android.widget.TextView[@text='推荐']").click();
driver.findElementByXPath("//android.widget.TextView[@text='租房']").click();
driver.findElementByXPath("//android.widget.TextView[@text='新房']").click();
driver.findElementByXPath("//android.widget.TextView[@text='二手房']").click();
driver.findElementByXPath("//android.widget.TextView[@text='商业地产']").click();
driver.findElementByXPath("//android.widget.TextView[@text='装修']").click();
//有料
driver.findElementByXPath("//android.widget.TextView[@text='有料']").click();
driver.findElementByXPath("//android.widget.TextView[@text='关注']").click();
driver.findElementByXPath("//android.widget.TextView[@text='热议']").click();
driver.findElementByXPath("//android.widget.TextView[@text='推荐']").click();
driver.findElementByXPath("//android.widget.TextView[@text='本地']").click();
driver.findElementByXPath("//android.widget.TextView[@text='房价']").click();
driver.findElementByXPath("//android.widget.TextView[@text='攻略']").click();
driver.findElementByXPath("//android.widget.TextView[@text='律师在线']").click();
driver.findElementByXPath("//android.widget.TextView[@text='户型改造']").click();
driver.findElementByXPath("//android.widget.TextView[@text='商业地产']").click();
driver.findElementByXPath("//android.widget.TextView[@text='海外']").click();
driver.findElementByXPath("//android.widget.TextView[@text='活动']").click();
//跳房子
driver.findElementByXPath("//android.widget.TextView[@text='挑好房']").click();
driver.navigate().back();
driver.findElementByXPath("//android.widget.TextView[@text='视频直播']").click();
driver.navigate().back();
driver.findElementByXPath("//android.widget.TextView[@text='问答']").click();
driver.navigate().back();
driver.findElementByXPath("//android.widget.TextView[@text='安居头条']").click();
driver.navigate().back();
driver.findElementByXPath("//android.widget.TextView[@text='购房百科']").click();
driver.navigate().back();
//首页
driver.findElementByXPath("//android.widget.TextView[@text='首页']").click();
// 2. 点击主页面的房价一栏的南京房价,进入房价选择页面,点击+关注,并查
// 看新房的房价情况,在新房的房价情况页面分别选择近 1 年或近 3 年进行查看
//房价
driver.findElementById("com.anjuke.android.app:id/price_address_text_view").click();
// //关注
// driver.findElementById("com.anjuke.android.app:id/title_text_view").click();
// driver.navigate().back();
// driver.swipe(455, 2090, 455,1200, 1000);
//新房
driver.findElementById("com.anjuke.android.app:id/new_house_tv").click();
//一年
driver.findElementById("com.anjuke.android.app:id/near_three_years_text_View").click();
driver.findElementById("com.anjuke.android.app:id/near_one_years_text_View").click();
driver.navigate().back();
System.out.println("返回一页");
driver.navigate().back();
System.out.println("返回两页");
// 3. 返回主页面,点击新房,点击房贷计算,填写总价 500,点击开始计算,查
// 看等额本息和等额本金,点击重新计算,点击历史按钮查看计算历史
driver.findElementByXPath("//android.widget.TextView[@text='新房']").click();
driver.findElementByXPath("//android.widget.TextView[@text='房贷计算']").click();
//总价500
driver.findElementById("com.anjuke.android.app:id/field_price_value").sendKeys(Keys.CONTROL,"a");
driver.findElementById("com.anjuke.android.app:id/field_price_value").sendKeys("500");
//开始计算
driver.findElementById("com.anjuke.android.app:id/publish_btn").click();
//等额本金
driver.findElementById("com.anjuke.android.app:id/btn_principle").click();
//等额本息
driver.findElementById("com.anjuke.android.app:id/btn_interest").click();
//重新计算
driver.findElementByXPath("//android.widget.TextView[@text='重新计算']").click();
//历史
driver.findElementById("com.anjuke.android.app:id/btnright").click();
driver.findElementById("com.anjuke.android.app:id/collapse_btn").click();
driver.navigate().back();
System.out.println("返回了一页");
driver.navigate().back();
System.out.println("返回了2页");
//聊天
// driver.findElementById("com.anjuke.android.app:id/wchat_msg_image_btn").click();
// driver.navigate().back();
// 4. 返回新房信息所在页面,点击第一条房源信息,点击关注变价,关注开盘以及
// 关注按钮,并点击加入对比按钮,然后点击左上角的比价按钮进行比价房源
// 选择,如图所示,选择猜你喜欢的前两套房源,然后点击开始对比
// 用以下方
// 式定位第
// 一条房源
// 信息:
// driver.find
// ElementsB
// yId(“com.a
// njuke.andr
// oid.app:id/
// thumb_im
// g_iv”).get(
// 0).click
// 点击有“比”
// 字样的按钮
// 进行比较房
// 源选择
// 5. 退回主页面,点击消息,进入消息模块,按图示要求进行测试
// 这部分仅需到达,不需
// 要进一步测试
// 对于热门群聊和优秀
// 置业顾问,分别对第一
// 条进行测试,点击后的
// 所有子页面仅需到达
// 6. 点击有料,进入有料模块,对于推荐一栏的所有模块进行遍历
// 7. 对于安居头条,挑好房,视频直播板块仅需要到达,不需要进一步的测试。
// 对于问答模块,需要对买房/买房/贷款/交易过户/租房模块进行遍历,并点
// 击我要提问,在输入框内输入“南大和园多少钱一平方”,点击提交。再对购
// 物百科模块测试。
// 遍历所有模块,
// 仅要求到达,不
// 需要进一步测试
// 输入“南大和园多少钱一平方”
// 对于上方所有条目和左侧所有选
// 项进行遍历,仅要求到达,不需
// 要进一步测试
//
}
/**
* AppiumDriver的初始化逻辑必须写在该函数中
* @return
*/
public AppiumDriver initAppiumTest() {
AppiumDriver driver=null;
File classpathRoot = new File(System.getProperty("user.dir"));
File appDir = new File(classpathRoot, "apk");
File app = new File(appDir, "Anjuke.apk");
//设置自动化相关参数
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName", "Android Emulator");
capabilities.setCapability("noSign", "true");
//设置apk路径
capabilities.setCapability("app", app.getAbsolutePath());
//设置app的主包名和主类名
capabilities.setCapability("appPackage", "com.anjuke.android.app");
capabilities.setCapability("appActivity", "com.anjuke.android.app.WelcomeActivity");
//设置使用unicode键盘,支持输入中文和特殊字符
capabilities.setCapability("unicodeKeyboard","true");
//设置用例执行完成后重置键盘
capabilities.setCapability("resetKeyboard","true");
//初始化
try {
driver = new AppiumDriver(new URL("http://127.0.0.1:4723/wd/hub"), capabilities);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return driver;
}
public void start() {
test(initAppiumTest());
}
public static void main(String[] args) {
Main main = new Main();
main.start();
}
}