在Appium中,可以通过使用adb命令来模拟相机捕获上传的图像,而无需使用模拟器上的相册。下面是一个示例代码:
import io.appium.java_client.android.AndroidDriver;
import io.appium.java_client.android.nativekey.KeyEvent;
import org.openqa.selenium.By;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
public class AppiumCameraCapture {
public static void main(String[] args) throws IOException, InterruptedException {
// 设置Desired Capabilities
DesiredCapabilities caps = new DesiredCapabilities();
caps.setCapability("deviceName", "Android Emulator");
caps.setCapability("platformName", "Android");
caps.setCapability("appPackage", "com.android.camera2");
caps.setCapability("appActivity", "com.android.camera.CameraLauncher");
// 实例化AndroidDriver对象
AndroidDriver driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), caps);
// 设置隐式等待时间
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
// 点击拍照按钮
driver.findElement(By.id("com.android.camera2:id/shutter_button")).click();
// 等待图片保存完成
Thread.sleep(5000);
// 模拟按下物理键来保存图片
driver.pressKey(new KeyEvent(AndroidKey.CAMERA));
// 等待图片保存完成
Thread.sleep(5000);
// 退出Driver
driver.quit();
}
}
在这个示例中,我们使用了com.android.camera2
应用程序包和com.android.camera.CameraLauncher
活动来启动相机应用程序。我们首先点击拍照按钮来拍摄照片,然后使用物理键模拟保存操作。在保存图片之前,我们使用了Thread.sleep()
方法来等待一定的时间,以确保图片保存完成。
请注意,你需要将Android SDK的adb
工具添加到系统的PATH环境变量中,以便在命令行中使用adb
命令。
希望这个示例能够帮助到你!