浏览代码

headless-browser: Add a --dump-text mode for simplified run & dump tests

This dumps the text content of the page (via a cheesy "select all" +
"get selected text" maneuver) :^)
Andreas Kling 2 年之前
父节点
当前提交
3389eed59c
共有 1 个文件被更改,包括 12 次插入0 次删除
  1. 12 0
      Userland/Utilities/headless-browser.cpp

+ 12 - 0
Userland/Utilities/headless-browser.cpp

@@ -174,12 +174,14 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
     auto resources_folder = "/res"sv;
     auto resources_folder = "/res"sv;
     StringView web_driver_ipc_path;
     StringView web_driver_ipc_path;
     bool dump_layout_tree = false;
     bool dump_layout_tree = false;
+    bool dump_text = false;
     bool is_layout_test_mode = false;
     bool is_layout_test_mode = false;
 
 
     Core::ArgsParser args_parser;
     Core::ArgsParser args_parser;
     args_parser.set_general_help("This utility runs the Browser in headless mode.");
     args_parser.set_general_help("This utility runs the Browser in headless mode.");
     args_parser.add_option(screenshot_timeout, "Take a screenshot after [n] seconds (default: 1)", "screenshot", 's', "n");
     args_parser.add_option(screenshot_timeout, "Take a screenshot after [n] seconds (default: 1)", "screenshot", 's', "n");
     args_parser.add_option(dump_layout_tree, "Dump layout tree and exit", "dump-layout-tree", 'd');
     args_parser.add_option(dump_layout_tree, "Dump layout tree and exit", "dump-layout-tree", 'd');
+    args_parser.add_option(dump_text, "Dump text and exit", "dump-text", 'T');
     args_parser.add_option(resources_folder, "Path of the base resources folder (defaults to /res)", "resources", 'r', "resources-root-path");
     args_parser.add_option(resources_folder, "Path of the base resources folder (defaults to /res)", "resources", 'r', "resources-root-path");
     args_parser.add_option(web_driver_ipc_path, "Path to the WebDriver IPC socket", "webdriver-ipc-path", 0, "path");
     args_parser.add_option(web_driver_ipc_path, "Path to the WebDriver IPC socket", "webdriver-ipc-path", 0, "path");
     args_parser.add_option(is_layout_test_mode, "Enable layout test mode", "layout-test-mode", 0);
     args_parser.add_option(is_layout_test_mode, "Enable layout test mode", "layout-test-mode", 0);
@@ -209,6 +211,16 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
             out("{}", layout_tree);
             out("{}", layout_tree);
             fflush(stdout);
             fflush(stdout);
 
 
+            event_loop.quit(0);
+        };
+    } else if (dump_text) {
+        view->on_load_finish = [&](auto const&) {
+            view->select_all();
+            auto text = view->selected_text();
+
+            out("{}", text);
+            fflush(stdout);
+
             event_loop.quit(0);
             event_loop.quit(0);
         };
         };
     } else if (web_driver_ipc_path.is_empty()) {
     } else if (web_driver_ipc_path.is_empty()) {