当前位置: 首页 > 知识库问答 >
问题:

将Appium与webdriver/sikuli一起使用时出现“原始错误:找不到已连接的Android设备”错误

闽经纬
2023-03-14

在单独的项目中尝试时,Appium运行良好。但当我与WebDriver/Sikuli一起使用时,会出现以下例外情况:,

组织。openqa。硒。SessionNotCreatedException:无法创建新会话。(原始错误:找不到已连接的Android设备。)

我的代码是:

public class HelloAppium {
static AppiumDriver appiumDriver;
static WebDriver driver;
static AndroidDriver androidDriver;

public static void main(String[] args) throws InterruptedException, MalformedURLException {

    
    AppiumServerUtils aServer = new AppiumServerUtils();
    aServer.startServer();
    System.out.println("Started");
    
    setUp();
            
    WebElement ele =  androidDriver.findElement(By.id("com.android.device:id/editPin"));
    ele.click();
    ele.sendKeys("1111");
    ele.clear();
    
    ele.sendKeys("");
    androidDriver.hideKeyboard();
            
    aServer.stopServer();
    
}

private static void setUp() throws MalformedURLException {
    DesiredCapabilities mDesiredCapabilities = new DesiredCapabilities();
    mDesiredCapabilities.setCapability(MobileCapabilityType.PLATFORM_NAME, "Android");
    mDesiredCapabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "Moto X");
    mDesiredCapabilities.setCapability(MobileCapabilityType.APP_PACKAGE, "net.android.device");
    mDesiredCapabilities.setCapability(MobileCapabilityType.APP_ACTIVITY, "com.android.launcher.Main");
    mDesiredCapabilities.setCapability(MobileCapabilityType.APP_WAIT_ACTIVITY, "com.android.tools.remotecontrol.dialogs.Authentication");
    
    mDesiredCapabilities.setCapability(MobileCapabilityType.VERSION, "4.4.4");
    
    driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), mDesiredCapabilities);
    androidDriver = (AndroidDriver)driver;
    appiumDriver = (AppiumDriver)driver;
    driver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
    androidDriver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
    appiumDriver.manage().timeouts().implicitlyWait(40, TimeUnit.SECONDS);
    
}

}

启动Appium的命令行代码是,

public class AppiumServerUtils {

public  void startServer(){
    CommandLine command = new CommandLine("cmd");
    command.addArgument("/c",false);
    command.addArgument("F:\\Softwares\\Selenium\\Appium\\AppiumForWindows-1.2.4.1\\Appium\\node.exe",false);
    command.addArgument("F:\\Softwares\\Selenium\\Appium\\AppiumForWindows-1.2.4.1\\Appium\\node_modules\\appium\\bin\\appium.js", false);
    command.addArgument("--address",false);
    
    command.addArgument("127.0.0.1",false);
    command.addArgument("--port",false);
    command.addArgument("4723",false);
    command.addArgument("--bootstrap-port",false);
    command.addArgument("4724",false);
    command.addArgument("--selendroid-port",false);
    command.addArgument("8082",false); 
    command.addArgument("--no-reset",false);
    command.addArgument("--local-timezone",false);
    command.addArgument("--log",false);
    command.addArgument("F:\\Softwares\\Selenium\\Appium\\appiumServerLogs.txt",false);
    DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
    DefaultExecutor executor = new DefaultExecutor();
    executor.setExitValue(1);


    InputStream is = new InputStream() {
        @Override
        public int read() throws IOException {
            return 0;
        }
    };

    try{
        //code for looking Appium server logs
        //executor.getStreamHandler().setProcessOutputStream(is);
        
        executor.execute(command, resultHandler);
        
        for(int i=1;i<=10;i++){
            if(new File("F:\\Softwares\\Selenium\\Appium\\appiumServerLogs.txt").length()!=0){
                System.out.println("file size is not Zero ");
                break;
            }
                            
            System.out.println("file size is Zero ");
                Thread.sleep(4000);
            
        }

    }catch(IOException e){
        e.printStackTrace();
    }
    catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public  void stopServer(){

    CommandLine command = new CommandLine("cmd");
    command.addArgument("/c");
    command.addArgument("taskkill");
    command.addArgument("/F");
    command.addArgument("/IM");
    command.addArgument("node.exe");

    DefaultExecuteResultHandler resultHandler = new DefaultExecuteResultHandler();
    DefaultExecutor executor = new DefaultExecutor();
    executor.setExitValue(1);

    try {
        executor.execute(command, resultHandler);
    } catch (IOException e) {
        e.printStackTrace();
    }


}

}

日志:

[36minfo[39m:[37m]--

有人能帮忙吗

共有1个答案

蒋鸿文
2023-03-14

对我来说这看起来很奇怪,你的APP_包“net.android.device”APP_活动”com.android.launcher.Main“指向不同的包。

通常定义如下

APP_PACKAGE  com.example.simpleaapp
APP_ACTIVITY com.example.simpleaapp.MyActivity
 类似资料:
  • 驱动程序=新的IOSDriver(新的URL(“http://127.0.0.1:4723/wd/hub(能力),; } } 请参阅所附的屏幕截图和屏幕截图中的错误。有人能帮帮我吗?我在Mac 10.10.5版本上使用Appium

  • 我有一个通过http承载图像的地理服务器。我的客户端站点使用https。我一直在使用openlayers,一切都很好。现在我正试图转移到cesiumjs,我在IE或Edge中没有得到任何图像(不幸的是,我无法测试其他浏览器)。如果使用bing地图,我可以在我的客户机中获取图像,因此客户机代码在其他情况下是可用的。在浏览器控制台中,我看到: SEC7117:网络请求超文本传输协议://[myserv

  • 在嵌入式TomEE容器中运行Arquillian测试时,我得到了以下错误

  • 我升级到Appium1.5,现在当我启动并尝试运行我的测试时,我看到了这个错误:检查我的设置,一切似乎都很好,甚至检查器也很好。 [AndroidDriver]错误:找不到操作系统为1的活动设备或模拟器。以下是可用的:192.168.99.101:5555(4.3)at object.wrappdlogger.errorandthrow(lib/logger.js:60:13)at object.

  • 问题内容: 当我尝试将SVN连接到Eclipse时,出现以下错误:知道如何解决吗? 问题答案: 选择SVN接口: 客户端:SVNKit(纯Java) 应用并重试。

  • 问题内容: 我正在使用Android Custom Launcher。该应用程序可以在某些手机上完美运行,但不能在其他手机上启动。启动应用程序时,会发生以下错误。 问题答案: 因此,经过大量搜索之后,我才知道这个问题是由于多重处理造成的。在某些手机上,多点排序不起作用。可能是由于其Android版本。但是我通过引入应用程序类来解决此问题 在清单中,我在应用程序标签中输入了该名称,例如: