前言
这比赛我最终放弃了,没什么搞头,贴一下我的代码,有兴趣的参考下吧,也没什么技术含量。?汗
代码
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.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) throws InterruptedException{
Thread.sleep(6000); //等待6s,待应用完全启动
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //设置尝试定位控件的最长时间为8s,也就是最多尝试8s
/*
* 余下的测试逻辑请按照题目要求进行编写
*/
//修改城市为南京
Thread.sleep(10000);
Boolean is_update = driver.getPageSource().contains("com.sankuai.meituan:id/btn_cancle");
if(is_update) {
driver.findElement(By.id("com.sankuai.meituan:id/btn_cancle")).click();
}
// driver.findElement(By.id("com.sankuai.meituan:id/btn_cancle")).click();
// Thread.sleep(1000);
driver.findElement(By.className("android.widget.EditText")).sendKeys("南京");
Thread.sleep(2000);
driver.findElement(By.id("com.sankuai.meituan:id/citylist_textview")).click();
Thread.sleep(8000);
Boolean is_update1 = driver.getPageSource().contains("com.sankuai.meituan:id/btn_cancle");
if(is_update1) {
driver.findElement(By.id("com.sankuai.meituan:id/btn_cancle")).click();
}
System.out.println("Step one is done!");
//Test for bottoms
driver.findElementByAccessibilityId("附近").click();
Thread.sleep(1000);
driver.findElementByAccessibilityId("发现").click();
Thread.sleep(1000);
driver.findElementByAccessibilityId("订单").click();
Thread.sleep(1000);
driver.findElementByAccessibilityId("我的").click();
Thread.sleep(1000);
driver.findElementByAccessibilityId("首页").click();
Thread.sleep(1000);
System.out.println("Step two is done!");
//进入美食页面
driver.findElementByAccessibilityId("美食").click();
Thread.sleep(10000);
driver.findElement(By.xpath("//android.widget.LinearLayout[contains(@index,'0')]")).click();
Thread.sleep(2000);
driver.sendKeyEvent(4);
System.out.println("0 done");
driver.findElement(By.xpath("//android.widget.LinearLayout[contains(@index,'1')]")).click();
Thread.sleep(2000);
driver.sendKeyEvent(4);
System.out.println("1 done");
driver.findElement(By.xpath("//android.widget.LinearLayout[contains(@index,'2')]")).click();
Thread.sleep(2000);
driver.sendKeyEvent(4);
System.out.println("2 done");
driver.findElement(By.xpath("//android.widget.LinearLayout[contains(@index,'3')]")).click();
Thread.sleep(2000);
driver.sendKeyEvent(4);
System.out.println("3 done");
driver.findElement(By.xpath("//android.widget.LinearLayout[contains(@index,'4')]")).click();
Thread.sleep(8000);
driver.findElement(By.id("com.sankuai.meituan:id/close")).click();
Thread.sleep(500);
driver.sendKeyEvent(4);
System.out.println("4 done");
driver.findElement(By.xpath("//android.widget.LinearLayout[contains(@index,'5')]")).click();
Thread.sleep(8000);
// driver.findElement(By.id("com.sankuai.meituan:id/close")).click();
// Thread.sleep(500);
driver.sendKeyEvent(4);
System.out.println("5 done");
driver.findElement(By.xpath("//android.widget.LinearLayout[contains(@index,'6')]")).click();
Thread.sleep(2000);
driver.sendKeyEvent(4);
System.out.println("6 done");
driver.findElement(By.xpath("//android.widget.LinearLayout[contains(@index,'7')]")).click();
Thread.sleep(4000);
driver.sendKeyEvent(4);
System.out.println("7 done");
// driver.findElement(By.xpath("//android.widget.LinearLayout[contains(@index,'8')]")).click();
// Thread.sleep(3000);
// driver.sendKeyEvent(4);
//进入美食中的地图子页面
driver.findElement(By.id("com.sankuai.meituan:id/food_list_map_menu_img")).click();
Thread.sleep(2000);
driver.findElement(By.xpath("//android.widget.TextView[contains(@index,'3')]")).click();
// driver.sendKeyEvent(66);
Thread.sleep(8000);
driver.sendKeyEvent(4);
driver.findElement(By.id("com.sankuai.meituan:id/tv_search_text")).sendKeys("小龙虾");
Thread.sleep(1000);
driver.findElement(By.id("com.sankuai.meituan:id/search")).click();
Thread.sleep(8000);
driver.quit();
}
/**
* 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, "Meituan.apk");
//设置自动化相关参数
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setCapability("browserName", "");
capabilities.setCapability("platformName", "Android");
capabilities.setCapability("deviceName", "Android Emulator");
//设置apk路径
capabilities.setCapability("app", app.getAbsolutePath());
capabilities.setCapability("appPackage","com.sankuai.meituan");
capabilities.setCapability("appActivity","com.meituan.android.pt.homepage.activity.Welcome");
//设置使用unicode键盘,支持输入中文和特殊字符
capabilities.setCapability("unicodeKeyboard","true");
//设置用例执行完成后重置键盘
capabilities.setCapability("resetKeyboard","true");
capabilities.setCapability("noSign","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() {
try {
test(initAppiumTest());
}catch (InterruptedException e) {
e.printStackTrace();
}
}
// public void myFindElement(AppiumDriver driver,String ByPass ,String info,String operator) {
//
// }
public static void main(String[] args) {
Main main = new Main();
main.start();
}
}
总结
令我绝望的是,代码提交不上去。。。
此系列终!