【问题标题】:How to get Appium Server logs如何获取 Appium 服务器日志
【发布时间】:2015-10-05 22:54:07
【问题描述】:

有什么方法可以让 Appium 服务器日志像测试脚本一样

 driver.manage().logs().get("appium server");

或将appium服务器日志重定向到控制台

我的主要目的是单独获取检测日志而不是所有日志

 info: [debug] [INST]  instrument logs

【问题讨论】:

    标签: java ios selenium instruments appium


    【解决方案1】:

    正如@Kirill Zhukov 所说。

    您还可以使用标志-G--webhook 将日志输出发送到HTTP 侦听器,如下所示:--webhook localhost:9876

    如果您使用 UI,则必须启用此 Log to webhook

    我创建了一个简单的 Socket 服务器来监听日志,它工作得很好。根据您的需要使用这个服务器来获取日志。下面的代码将在控制台中打印日志

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.util.logging.Level;
    
    import java.util.logging.Logger;
    
    public class Server extends Thread {
    
    private static ServerSocket socket;
    private static String home = "./";
    private static int port = 9876;
    private static boolean isAlive = true;
    private static final Server server = new Server();
    
    public static Server getServer(String[] args) {
        if (args.length == 2) {
            home = args[1];
        }
        port = Integer.parseInt(args[0]);
        return server;
    }
    
    private Server() {
    
    }
    
    public static Server getServer() {
        return server;
    }
    
    @Override
    public void run() {
        try {
            if (socket != null) {
                if (!socket.isClosed()) {
                    if (port == getPort()) {
                        System.err.println("Server active at the Same Port! ");
                    } else {
                        close();
                    }
                }
            }
            socket = new ServerSocket(port);
            port = socket.getLocalPort();
            System.out.println("Server accepting connections on port :" + port);
            socket.setReceiveBufferSize(146988);
            handlleRequest();
        } catch (IOException e) {
            System.err.println("Could not start server: " + e.getMessage());
            port = 0;
            run();
        }
    }
    
    public int getPort() {
        return socket == null ? 0 : port;
    }
    
    public String getPortS() {
        return String.valueOf(port);
    }
    
    public void Stop() {
        isAlive = false;
    }
    
    public void handlleRequest() {
        while (isAlive) {
            System.out.println("Test");
            try (Socket connection = socket.accept()) {
                display(connection);
            } catch (IOException e) {
                System.err.println(e);
            }
        }
    }
    
    public void display(Socket connection) {
        try (BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()))) {
            String line = in.readLine();
            while (in.ready() && line != null) {
                System.out.println(line);
                line = in.readLine();
            }
        } catch (IOException ex) {
            Logger.getLogger(Server.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    public void close() throws IOException {
        if (socket != null && !socket.isClosed()) {
            isAlive = false;
            socket.close();
        }
    }
    
    public static void main(String[] args) {
        args = new String[]{"9876", "./"};
        Server f = Server.getServer(args);
        f.start();
    }
    
    }
    

    【讨论】:

      【解决方案2】:

      来自官方documentation

      • 您可以使用 appium 标志 -g--log 指定要存储日志的文件路径,然后可以通过 [INST] 过滤它?
      • 您还可以使用-G--webhook 标志将日志输出发送到HTTP 侦听器,如下所示:--webhook localhost:9876。我不知道它是如何工作的,但我想知道!
      • 有标志--log-timestamp 在控制台输出中打开时间戳(默认为false)。我建议启用它:)

      【讨论】:

      • 谢谢。无论如何检查答案我已经实现了第二个选项
      【解决方案3】:

      在没有我们手头使用的代码的情况下编写一个可能的解决方案,注意这是我们在 Windows 机器上运行的节点上所做的,但它也可能适用于 Appium。 AFAIK 有一个您实例化的 IOSDriver,该驱动程序从 RemoteWebDriver 扩展,它具有可覆盖的日志方法(不记得名称)。您可以扩展 IOSDriver 类并覆盖该日志记录方法,以便您可以使用您喜欢的日志库在任何地方进行日志记录。

      【讨论】:

      • 我们只能获取 webdriver 日志而不是 appium 日志。无论如何我找到了解决方案
      猜你喜欢
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 2013-09-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多