如何获取Appium服务器日志

2023-12-24

有没有办法在测试脚本中获取 Appium 服务器日志

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

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

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

 info: [debug] [INST]  instrument logs

正如@Kirill Zhukov 所说。

您还可以使用 flag 将日志输出发送到 HTTP 侦听器-G or --webhook像那样:--webhook localhost:9876.

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

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

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();
}

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何获取Appium服务器日志 的相关文章

随机推荐

  • 为什么 java 抱怨 jar 文件有很多条目?

    我偶然发现了以下问题 当我创建时 jar文件包含超过 65k 条目 java 抱怨 无效或损坏的 jarfile 例子 in fresh dir for i in 1 70000 do touch i done jar cf app jar
  • 了解一次性物品

    我查过类似这样的问题 即使我发现了很多问题 但其中任何一个都为我解决了这个问题 假设我有这段代码 public class SuperObject IDisposable public void Dispose Dispose true G
  • 检查远程计算机中是否存在注册表路径

    我已使用 Powershell 使用此命令检查路径是否存在 powershell 测试路径 HKCU Software Microsoft Windows 现在如何将同样的功能扩展到远程机器 如果我想测试远程计算机中的注册表路径 语法是什么
  • toBeFalsy() 的目的是什么?

    我在模板驱动表单中有一个角度输入
  • 如何在 WPF 数据网格中启用 NewItem Placeholder

    我有一个 wpf 数据网格 它绑定到一个可观察的集合 目前我没有 NewItemPlaceHolder 如何启用 NewItemPlaceholder 底部的空行以添加新行 这是我声明数据网格的方式
  • PHP 中的参数签名是什么?

    PHP官方文档同时解释了一下extends在类和对象部分下 它说 When overriding methods the parameter signature should remain the same or PHP will gene
  • Walmart Feeds API 错误:您的卖家目录中已存在具有不同 SKU 的产品 ID

    我正在使用这个API v3 feeds feedType MP MAINTENANCE 更新一些沃尔玛商品 我将提供 SKU 和 UPC 代码以及其他详细信息 对于某些产品来说它运行良好 但是沃尔玛已经存在一种具有不同 sku 的特定产品
  • 如何在Java中使用正则表达式拆分后删除空结果?

    我想找到给定字符串中的所有数字 所有数字都与字母混合但用空格分隔 我尝试拆分输入字符串 但在检查结果数组时发现有很多空字符串 那么如何更改我的分割正则表达式以删除这些空白 Pattern reg Pattern compile D0 Str
  • 在 HTML5 中拖放的 JavaScript

    尝试在 HTML5 中执行一个简单的拖放示例 但是当我将图像放入 div 元素中时 出现以下错误 未捕获的类型错误 无法将属性 innerHTML 设置为 null 所以我假设错误消息意味着dragElement为空 我不明白为什么 因为我
  • @font-face 在 Android 版 Chrome 中不起作用

    我正在使用一个 font face声明在网站上调用字体并显示在IE FF Chrome 甚至移动 Safari 但是 该字体未显示在铬18 0 1025308 for 安卓 4 1 2 我使用的语法是字体弹簧的 http www fonts
  • ConcurrentHashMap的传递方法中,我不明白这两个条件“i >= n”和“i + n >= nextn”的含义

    在transfer方法中 判断扩展终止 或帮助传输线程完成 的条件是if i lt 0 i gt n i n gt nextn 我知道i lt 0这个条件意味着所有的bin都已经被分配了 但是我不明白其他两个条件的含义 i gt n and
  • 没有“Access-Control-Allow-Origin”客户端修复

    我正在尝试从 NFL 获取免费数据由suredbits提供的API http suredbits com api 不幸的是 在他们的标题中 他们没有添加Access Control Allow Origin 这会产生 CORS 问题 当我尝
  • 如何将 cin 与可变数量的输入一起使用?

    我昨天参加了一个编程比赛 我们必须读取表单的输入 n a1 a2 an m b1 b2 bm 其中第一行表示有多少个输入 下一行包含那么多输入 所有输入都是整数 我知道如果每行都有相同数量的输入 比如 3 我们可以写类似的内容 while
  • 使用urwid,如何通过按键一次显示一行?

    尝试创建一个简单的函数 当按下回车键或向下翻页键时 一次显示文本文件中的一行 我don t希望每次都能清除线路 换句话说 我需要暂停程序直到按下下一个按键 因为它只显示第一行 我尝试了一段时间 确实 没有成功 谢谢你的帮助 Handle k
  • 将 git lfs 存储库重置为指针

    我有一个git LFS https git lfs github com存储库已签出 所有的二进制文件都是pointers 我用以下方法提取了真正的二进制文件 git lfs pull include some binaries 我使用了二
  • 如何设置 grunt + browserify + tsify + babelify?

    我正在努力设置 grunt browserify tsify babelify 带调试 下面的 gruntfile 设置确实编译了 typescript 但没有发生 babel 转换 有人可以让我知道该怎么做吗 我可能需要使用 gulp 来
  • 使用 C 函数扩展 PostgreSQL 时实现高性能事务

    我的目标是实现将数据块从数据库复制到 C 函数中以进行处理并作为查询结果返回的最高性能 我是 PostgreSQL 的新手 目前正在研究移动数据的可能方法 具体来说 我正在寻找与 PostgreSQL 相关的细微差别或关键字 以快速移动大数
  • Laravel:在哪里存储全局数组数据和常量?

    我刚刚开始使用 Laravel 我需要重写几年前制作的整个系统 使用 Laravel 4 作为基础框架 在我的旧系统中 我曾经有一个constant php声明了一些常量的文件 以及globals php文件包含大量数组集 例如 类别状态
  • Babel:replaceWithSourceString 给出意外的标记 (1:1)

    我正在尝试替换动态 导入 语句 下面是一个检查导入是否以加号结尾的示例 module exports function babel return visitor ImportDeclaration function path state i
  • 如何获取Appium服务器日志

    有没有办法在测试脚本中获取 Appium 服务器日志 driver manage logs get appium server 或将 appium 服务器日志重定向到控制台 我的主要目的是单独获取仪器日志而不是所有日志 info debug