qq_36756782 2024-06-29 23:26 采纳率: 0%
浏览 14
问题最晚将于07月07日00:00点结题

java+appium2.1+idea

appium2+Java+idea

连接虚拟机,实现代码测试虚拟机
下面是我参考博客写的,但是运行都是无法连接虚拟机。appium2log也会报各种不同的错误

img

img

  • 写回答

22条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-29 23:35
    关注

    引自免费微信小程序:皆我百晓生

    从你提供的代码片段来看,你正尝试通过Java与Appium 2.x版本配合IDEA集成开发环境,对Android虚拟机进行自动化测试。遇到的问题是无法成功连接到虚拟机,并且Appium日志显示了诸如NoSuchDriverError等错误。我将提供一些详细的检查点和调整建议来帮助你解决这个问题。

    1. 确保Appium服务已启动

    首先,确保Appium服务正在运行,并监听正确的端口(默认是4723)。可以通过命令行启动Appium服务,对于Appium 2.x,通常使用以下命令:

    appium --relaxed-security
    

    --relaxed-security 参数可以减少一些安全限制,这对于调试很有帮助。

    2. 检查虚拟机状态

    确保Android虚拟机已经启动并且处于解锁状态。可以通过AVD Manager检查虚拟机的状态,并手动启动它。确保虚拟机的名称(如emulator-5554)与代码中设置的一致。

    3. 正确设置Desired Capabilities

    根据你的描述,有几点需要注意:

    • Platform Version: 应该是具体的Android版本号,如10.0而不是5.8.0.4,这看起来像是一个错误的版本格式。

    • APP Package and Activity: 需要确保appPackageappActivity的值正确无误,通常这些信息可以通过adb命令获取,例如:

      adb shell dumpsys window | grep -E 'mCurrentFocus|mFocusedApp'
      

      确保.activity.WelcomeGuideActivity.activity.MainActivity是正确的启动Activity。

    • Unicode Keyboard and Reset Keyboard: 这些设置对于中文输入可能有用,但请确保你的应用确实需要这些设置。

    修改后的代码示例

    基于上述建议,这里是一个修改后的代码示例:

    import io.appium.java_client.android.AndroidDriver;
    import io.appium.java_client.android.options.UiAutomator2Options;
    import org.openqa.selenium.By;
    
    public class AppiumTest {
        public static void main(String[] args) {
            // 初始化Appium选项
            UiAutomator2Options options = new UiAutomator2Options();
            options.setPlatformName("Android");
            options.setAutomationName("UiAutomator2");
            options.setDeviceName("emulator-5554");
            options.setAppPackage("com.MobileTicket");
            // 确保appActivity是正确的启动Activity
            options.setAppActivity(".ui.activity.WelcomeGuideActivity"); // 或者".activity.MainActivity"
            options.setNoReset(true);
            
            try {
                // 启动Appium服务并初始化驱动
                AndroidDriver<MobileElement> driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723"), options);
                
                System.out.println("Appium Driver initialized");
                
                // 示例操作
                Thread.sleep(3000); // 等待应用加载
                driver.findElement(By.xpath("//*[@content-desc='铁路12306']")).click();
                Thread.sleep(1000);
                
                // 结束测试后记得关闭driver
                driver.quit();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    

    注意事项

    • 确保你已经安装了所有必要的依赖,比如Appium Java Client库。
    • 如果使用的是较新版本的Appium和Android SDK,请检查是否有兼容性问题。
    • 查看Appium的日志输出,它通常会提供更详细的错误信息,有助于定位问题。

    遵循以上步骤,你应该能解决连接虚拟机的问题。如果仍然遇到问题,请仔细检查Appium的错误日志,它们通常会指向问题的具体原因。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月29日

悬赏问题

  • ¥20 找辅导 初学者 想实现一个项目 没有方向
  • ¥15 关于渗漏场的电场分布模拟
  • ¥24 matlab怎么修改仿真初始时间
  • ¥15 两分段线性回归模型分析阈值效应
  • ¥15 前端和后端代码都没报错,但是点登录没反应的?
  • ¥100 需要远程解决QSQLITE问题!
  • ¥15 利用光场表达式画出初始光场强度分布图像等几个问题在这两个图片里
  • ¥15 gozero求手把手教学,400一天
  • ¥15 泥浆冲清水的泥浆分布
  • ¥15 LASSO回归分析筛选关键基因,适合多大样本量?