Appium——主从控制执行
1.客户端(Eclipse)机器A, 服务端(appium、Genymotion)机器B
2.设置Appium,Server Address为192.168.17.123,重新启动Appium
3.在客户端机器A浏览器中输入:http://192.168.17.123:4723/wd/hub,
说明配置成功。
JAVA代码:
其中driver= new AndroidDriver<WebElement>(new URL("http://192.168.17.123:4723/wd/hub"), capabilities);
capabilities.setCapability("app", "F:\\ContactManager.apk");F:\\ContactManager.apk为服务端APK的路径
public class AppiumTest { public AndroidDriver<WebElement> driver; @BeforeClass public void startTest() throws MalformedURLException{ // File classpathRoot= new File(System.getProperty("user.dir")); // File appDir= new File(classpathRoot, "res/app"); // File app= new File(appDir, "ContactManager.apk"); DesiredCapabilities capabilities= new DesiredCapabilities(); capabilities.setCapability("automationName", "Appium"); capabilities.setCapability("platformName","Android"); capabilities.setCapability("deviceName","Android Emulator"); capabilities.setCapability("platformVersion", "4.4.2"); // 根据这个app capabilities,Appium会在启动测试之前安装好app到设备 capabilities.setCapability("app", "F:\\ContactManager.apk"); //设置安卓app的包名的capability,告诉appium你要运行哪个app。 capabilities.setCapability("appPackage", "com.example.android.contactmanager"); capabilities.setCapability("appActivity", ".ContactManager"); driver= new AndroidDriver<WebElement>(new URL("http://192.168.17.123:4723/wd/hub"), capabilities); } @Test public void addContact() { // WebElement el= driver.findElement(By.xpath(".//*[@text='Add Contact']")); WebElement el = driver.findElementByAndroidUIAutomator("new UiSelector().text(\"Add Contact\")"); el.click(); List<WebElement> textFieldsList= driver.findElementsByClassName("android.widget.EditText"); textFieldsList.get(0).sendKeys("Some Name"); textFieldsList.get(2).sendKeys("Some@example.com"); driver.swipe(100, 500, 100, 100, 2); driver.findElementByXPath(".//*[@text='Save']").click(); } @AfterClass public void afterClass() { driver.quit(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!