前提条件
环境准备妥当,环境参考 https://blog.youkuaiyun.com/yunlongl/article/details/83898507
操作步骤
本篇先使用JAVA,python后面更新。
打开intelliJ IDEA,创建一个maven项目
在pom.xml中添加如下信息
<dependencies>
<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>6.1.0</version>
</dependency>
</dependencies>
在java目录下创建两个类
第一个配置类 AppiumConfig.java
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.DesiredCapabilities;
public class AppiumConfig {
// cap对象
private static final DesiredCapabilities INSTANCE = initAppium();
private static DesiredCapabilities initAppium() {
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
// 平台的名字
desiredCapabilities.setCapability("platformName", "Android");
//华为p20
desiredCapabilities.setCapability("deviceName", "CLB7N18A16002462");
// UI自动化调试的库版本, 默认为UiAutomator
desiredCapabilities.setCapability("automationName", "UiAutomator2");
// 记住session,跳过,广告不会弹出
desiredCapabilities.setCapability("noReset", true);
// APK的包名,需要反编译
desiredCapabilities.setCapability("appPackage", "appPackageName");
// Activity名字,反编译得出
desiredCapabilities.setCapability("appActivity", "appActivityName");
return desiredCapabilities;
}
public static DesiredCapabilities getINSTANCE() {
return INSTANCE;
}
}
appPackage,appActivity
在/android-sdk/android-sdk-macosx/build-tools/28.0.3目录下,打开终端
aapt dump badging apkName
然后找到
appPackageName就是引号中的内容
appActivityName就是引号中的内容
第二个类,Appium.java
public static void main(String[] args) throws MalformedURLException{
DesiredCapabilities desiredCapabilities = AppiumConfig.getINSTANCE();
// 与安卓手机建立连接
URL remoteUrl = new URL("http://localhost:4723/wd/hub");
// 实例化driver对象
AndroidDriver driver = new AndroidDriver(remoteUrl, desiredCapabilities);
System.out.println("已启动手机");
}
这样就成功启动了安卓手机。
注意:
如果安卓手机在爬虫的时候需要使用代理,可以参考这篇文章
https://www.seleniumhq.org/docs/04_webdriver_advanced.jsp#using-a-proxy