askui 0.20.1 → 0.20.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/core/model/custom-element-json.d.ts +1 -1
- package/dist/cjs/execution/dsl.d.ts +711 -217
- package/dist/cjs/execution/dsl.js +763 -264
- package/dist/esm/core/model/custom-element-json.d.ts +1 -1
- package/dist/esm/execution/dsl.d.ts +711 -217
- package/dist/esm/execution/dsl.js +763 -264
- package/package.json +3 -3
- package/dist/cjs/core/annotation/annotation-writer.js.map +0 -1
- package/dist/cjs/core/annotation/annotation.js.map +0 -1
- package/dist/cjs/core/inference-response/inference-response.js.map +0 -1
- package/dist/cjs/core/inference-response/invalid-model-type-error.js.map +0 -1
- package/dist/cjs/core/inference-response/model-type.js.map +0 -1
- package/dist/cjs/core/model/annotation-result/annotation-interface.js.map +0 -1
- package/dist/cjs/core/model/annotation-result/boundary-box.js.map +0 -1
- package/dist/cjs/core/model/annotation-result/detected-element.js.map +0 -1
- package/dist/cjs/core/model/custom-element-json.js.map +0 -1
- package/dist/cjs/core/model/custom-element.js.map +0 -1
- package/dist/cjs/core/reporting/default-step.js.map +0 -1
- package/dist/cjs/core/reporting/index.js.map +0 -1
- package/dist/cjs/core/reporting/instruction.js.map +0 -1
- package/dist/cjs/core/reporting/reporter-config.js.map +0 -1
- package/dist/cjs/core/reporting/reporter.js.map +0 -1
- package/dist/cjs/core/reporting/snapshot-detail-level.js.map +0 -1
- package/dist/cjs/core/reporting/snapshot.js.map +0 -1
- package/dist/cjs/core/reporting/step-reporter.js.map +0 -1
- package/dist/cjs/core/reporting/step-run.js.map +0 -1
- package/dist/cjs/core/reporting/step-status-end.js.map +0 -1
- package/dist/cjs/core/reporting/step-status.js.map +0 -1
- package/dist/cjs/core/reporting/step.js.map +0 -1
- package/dist/cjs/core/runner-protocol/index.js.map +0 -1
- package/dist/cjs/core/runner-protocol/request/capture-screenshot-request.js.map +0 -1
- package/dist/cjs/core/runner-protocol/request/control-request.js.map +0 -1
- package/dist/cjs/core/runner-protocol/request/get-server-process-pid.js.map +0 -1
- package/dist/cjs/core/runner-protocol/request/index.js.map +0 -1
- package/dist/cjs/core/runner-protocol/request/interactive-annotation-request.js.map +0 -1
- package/dist/cjs/core/runner-protocol/request/read-recording-request.js.map +0 -1
- package/dist/cjs/core/runner-protocol/request/runner-protocol-request.js.map +0 -1
- package/dist/cjs/core/runner-protocol/request/start-recording-request.js.map +0 -1
- package/dist/cjs/core/runner-protocol/request/stop-recording-request.js.map +0 -1
- package/dist/cjs/core/runner-protocol/response/index.js.map +0 -1
- package/dist/cjs/core/ui-control-commands/action.js.map +0 -1
- package/dist/cjs/core/ui-control-commands/control-command-code.js.map +0 -1
- package/dist/cjs/core/ui-control-commands/control-command.js.map +0 -1
- package/dist/cjs/core/ui-control-commands/index.js.map +0 -1
- package/dist/cjs/core/ui-control-commands/input-event.js.map +0 -1
- package/dist/cjs/execution/config-error.js.map +0 -1
- package/dist/cjs/execution/control-command-error.js.map +0 -1
- package/dist/cjs/execution/credentials-args.js.map +0 -1
- package/dist/cjs/execution/dsl.js.map +0 -1
- package/dist/cjs/execution/execution-runtime.js.map +0 -1
- package/dist/cjs/execution/index.js.map +0 -1
- package/dist/cjs/execution/inference-client.js.map +0 -1
- package/dist/cjs/execution/inference-response-error.js.map +0 -1
- package/dist/cjs/execution/is-image-required-interface.js.map +0 -1
- package/dist/cjs/execution/misc.js.map +0 -1
- package/dist/cjs/execution/model-composition-branch.js.map +0 -1
- package/dist/cjs/execution/read-environment-credentials.js.map +0 -1
- package/dist/cjs/execution/read-recording-response-stream-handler.js.map +0 -1
- package/dist/cjs/execution/repeat-error.js.map +0 -1
- package/dist/cjs/execution/ui-control-client-dependency-builder.js.map +0 -1
- package/dist/cjs/execution/ui-control-client.js.map +0 -1
- package/dist/cjs/execution/ui-controller-client-connection-state.js.map +0 -1
- package/dist/cjs/execution/ui-controller-client-error.js.map +0 -1
- package/dist/cjs/execution/ui-controller-client-interface.js.map +0 -1
- package/dist/cjs/execution/ui-controller-client.js.map +0 -1
- package/dist/cjs/lib/download-binaries.js.map +0 -1
- package/dist/cjs/lib/index.js.map +0 -1
- package/dist/cjs/lib/interactive_cli/add-script-package-json.d.ts +0 -1
- package/dist/cjs/lib/interactive_cli/add-script-package-json.js +0 -39
- package/dist/cjs/lib/interactive_cli/add-script-package-json.js.map +0 -1
- package/dist/cjs/lib/interactive_cli/cli-options-interface.js.map +0 -1
- package/dist/cjs/lib/interactive_cli/cli.js.map +0 -1
- package/dist/cjs/lib/interactive_cli/create-example-project.js.map +0 -1
- package/dist/cjs/lib/interactive_cli/index.js.map +0 -1
- package/dist/cjs/lib/libfuse-error.js.map +0 -1
- package/dist/cjs/lib/logger.js.map +0 -1
- package/dist/cjs/lib/timeout-error.js.map +0 -1
- package/dist/cjs/lib/ui-controller-args.js.map +0 -1
- package/dist/cjs/lib/ui-controller-darwin.js.map +0 -1
- package/dist/cjs/lib/ui-controller-facade.js.map +0 -1
- package/dist/cjs/lib/ui-controller-linux.js.map +0 -1
- package/dist/cjs/lib/ui-controller-win32.js.map +0 -1
- package/dist/cjs/lib/ui-controller.js.map +0 -1
- package/dist/cjs/lib/unkown-error.js.map +0 -1
- package/dist/cjs/lib/wayland-error.js.map +0 -1
- package/dist/cjs/main.js.map +0 -1
- package/dist/cjs/shared/index.js.map +0 -1
- package/dist/cjs/shared/log-levels.js.map +0 -1
- package/dist/cjs/shared/proxy-agent-args.js.map +0 -1
- package/dist/cjs/utils/analytics/analytics-interface.js.map +0 -1
- package/dist/cjs/utils/analytics/analytics.js.map +0 -1
- package/dist/cjs/utils/analytics/index.js.map +0 -1
- package/dist/cjs/utils/analytics/installation-timestamp-create-error.js.map +0 -1
- package/dist/cjs/utils/analytics/installation-timestamp-get-error.js.map +0 -1
- package/dist/cjs/utils/analytics/installation-timestamp.js.map +0 -1
- package/dist/cjs/utils/analytics/user-identifier-interface.js.map +0 -1
- package/dist/cjs/utils/analytics/user-identifier.js.map +0 -1
- package/dist/cjs/utils/base_64_image/base-64-image-error.js.map +0 -1
- package/dist/cjs/utils/base_64_image/base-64-image-string-error.js.map +0 -1
- package/dist/cjs/utils/base_64_image/base-64-image.js.map +0 -1
- package/dist/cjs/utils/base_64_image/sharp.js.map +0 -1
- package/dist/cjs/utils/http/credentials.js.map +0 -1
- package/dist/cjs/utils/http/custom-errors/authentication-http-client-error.js.map +0 -1
- package/dist/cjs/utils/http/custom-errors/client-http-client-error.js.map +0 -1
- package/dist/cjs/utils/http/custom-errors/general-http-client-error.js.map +0 -1
- package/dist/cjs/utils/http/custom-errors/http-client-error.js.map +0 -1
- package/dist/cjs/utils/http/custom-errors/index.js.map +0 -1
- package/dist/cjs/utils/http/custom-errors/server-http-client-error.js.map +0 -1
- package/dist/cjs/utils/http/custom-errors/unkown-http-client-error.js.map +0 -1
- package/dist/cjs/utils/http/http-client-got.js.map +0 -1
- package/dist/cjs/utils/http/index.js.map +0 -1
- package/dist/cjs/utils/image-resize-errors/image-resizing-base-error.js.map +0 -1
- package/dist/cjs/utils/image-resize-errors/index.js.map +0 -1
- package/dist/cjs/utils/path.js.map +0 -1
- package/dist/cjs/utils/proxy/proxy-builder.js.map +0 -1
- package/dist/cjs/utils/resized-image-interface.js.map +0 -1
- package/dist/cjs/utils/transformations.js.map +0 -1
- package/dist/esm/core/annotation/annotation-writer.js.map +0 -1
- package/dist/esm/core/annotation/annotation.js.map +0 -1
- package/dist/esm/core/inference-response/inference-response.js.map +0 -1
- package/dist/esm/core/inference-response/invalid-model-type-error.js.map +0 -1
- package/dist/esm/core/inference-response/model-type.js.map +0 -1
- package/dist/esm/core/model/annotation-result/annotation-interface.js.map +0 -1
- package/dist/esm/core/model/annotation-result/boundary-box.js.map +0 -1
- package/dist/esm/core/model/annotation-result/detected-element.js.map +0 -1
- package/dist/esm/core/model/custom-element-json.js.map +0 -1
- package/dist/esm/core/model/custom-element.js.map +0 -1
- package/dist/esm/core/reporting/default-step.js.map +0 -1
- package/dist/esm/core/reporting/index.js.map +0 -1
- package/dist/esm/core/reporting/instruction.js.map +0 -1
- package/dist/esm/core/reporting/reporter-config.js.map +0 -1
- package/dist/esm/core/reporting/reporter.js.map +0 -1
- package/dist/esm/core/reporting/snapshot-detail-level.js.map +0 -1
- package/dist/esm/core/reporting/snapshot.js.map +0 -1
- package/dist/esm/core/reporting/step-reporter.js.map +0 -1
- package/dist/esm/core/reporting/step-run.js.map +0 -1
- package/dist/esm/core/reporting/step-status-end.js.map +0 -1
- package/dist/esm/core/reporting/step-status.js.map +0 -1
- package/dist/esm/core/reporting/step.js.map +0 -1
- package/dist/esm/core/runner-protocol/index.js.map +0 -1
- package/dist/esm/core/runner-protocol/request/capture-screenshot-request.js.map +0 -1
- package/dist/esm/core/runner-protocol/request/control-request.js.map +0 -1
- package/dist/esm/core/runner-protocol/request/get-server-process-pid.js.map +0 -1
- package/dist/esm/core/runner-protocol/request/index.js.map +0 -1
- package/dist/esm/core/runner-protocol/request/interactive-annotation-request.js.map +0 -1
- package/dist/esm/core/runner-protocol/request/read-recording-request.js.map +0 -1
- package/dist/esm/core/runner-protocol/request/runner-protocol-request.js.map +0 -1
- package/dist/esm/core/runner-protocol/request/start-recording-request.js.map +0 -1
- package/dist/esm/core/runner-protocol/request/stop-recording-request.js.map +0 -1
- package/dist/esm/core/runner-protocol/response/index.js.map +0 -1
- package/dist/esm/core/ui-control-commands/action.js.map +0 -1
- package/dist/esm/core/ui-control-commands/control-command-code.js.map +0 -1
- package/dist/esm/core/ui-control-commands/control-command.js.map +0 -1
- package/dist/esm/core/ui-control-commands/index.js.map +0 -1
- package/dist/esm/core/ui-control-commands/input-event.js.map +0 -1
- package/dist/esm/execution/config-error.js.map +0 -1
- package/dist/esm/execution/control-command-error.js.map +0 -1
- package/dist/esm/execution/credentials-args.js.map +0 -1
- package/dist/esm/execution/dsl.js.map +0 -1
- package/dist/esm/execution/execution-runtime.js.map +0 -1
- package/dist/esm/execution/index.js.map +0 -1
- package/dist/esm/execution/inference-client.js.map +0 -1
- package/dist/esm/execution/inference-response-error.js.map +0 -1
- package/dist/esm/execution/is-image-required-interface.js.map +0 -1
- package/dist/esm/execution/misc.js.map +0 -1
- package/dist/esm/execution/model-composition-branch.js.map +0 -1
- package/dist/esm/execution/read-environment-credentials.js.map +0 -1
- package/dist/esm/execution/read-recording-response-stream-handler.js.map +0 -1
- package/dist/esm/execution/repeat-error.js.map +0 -1
- package/dist/esm/execution/ui-control-client-dependency-builder.js.map +0 -1
- package/dist/esm/execution/ui-control-client.js.map +0 -1
- package/dist/esm/execution/ui-controller-client-connection-state.js.map +0 -1
- package/dist/esm/execution/ui-controller-client-error.js.map +0 -1
- package/dist/esm/execution/ui-controller-client-interface.js.map +0 -1
- package/dist/esm/execution/ui-controller-client.js.map +0 -1
- package/dist/esm/lib/download-binaries.js.map +0 -1
- package/dist/esm/lib/index.js.map +0 -1
- package/dist/esm/lib/interactive_cli/add-script-package-json.d.ts +0 -1
- package/dist/esm/lib/interactive_cli/add-script-package-json.js +0 -32
- package/dist/esm/lib/interactive_cli/add-script-package-json.js.map +0 -1
- package/dist/esm/lib/interactive_cli/cli-options-interface.js.map +0 -1
- package/dist/esm/lib/interactive_cli/cli.js.map +0 -1
- package/dist/esm/lib/interactive_cli/create-example-project.js.map +0 -1
- package/dist/esm/lib/interactive_cli/index.js.map +0 -1
- package/dist/esm/lib/libfuse-error.js.map +0 -1
- package/dist/esm/lib/logger.js.map +0 -1
- package/dist/esm/lib/timeout-error.js.map +0 -1
- package/dist/esm/lib/ui-controller-args.js.map +0 -1
- package/dist/esm/lib/ui-controller-darwin.js.map +0 -1
- package/dist/esm/lib/ui-controller-facade.js.map +0 -1
- package/dist/esm/lib/ui-controller-linux.js.map +0 -1
- package/dist/esm/lib/ui-controller-win32.js.map +0 -1
- package/dist/esm/lib/ui-controller.js.map +0 -1
- package/dist/esm/lib/unkown-error.js.map +0 -1
- package/dist/esm/lib/wayland-error.js.map +0 -1
- package/dist/esm/main.js.map +0 -1
- package/dist/esm/shared/index.js.map +0 -1
- package/dist/esm/shared/log-levels.js.map +0 -1
- package/dist/esm/shared/proxy-agent-args.js.map +0 -1
- package/dist/esm/utils/analytics/analytics-interface.js.map +0 -1
- package/dist/esm/utils/analytics/analytics.js.map +0 -1
- package/dist/esm/utils/analytics/index.js.map +0 -1
- package/dist/esm/utils/analytics/installation-timestamp-create-error.js.map +0 -1
- package/dist/esm/utils/analytics/installation-timestamp-get-error.js.map +0 -1
- package/dist/esm/utils/analytics/installation-timestamp.js.map +0 -1
- package/dist/esm/utils/analytics/user-identifier-interface.js.map +0 -1
- package/dist/esm/utils/analytics/user-identifier.js.map +0 -1
- package/dist/esm/utils/base_64_image/base-64-image-error.js.map +0 -1
- package/dist/esm/utils/base_64_image/base-64-image-string-error.js.map +0 -1
- package/dist/esm/utils/base_64_image/base-64-image.js.map +0 -1
- package/dist/esm/utils/base_64_image/sharp.js.map +0 -1
- package/dist/esm/utils/http/credentials.js.map +0 -1
- package/dist/esm/utils/http/custom-errors/authentication-http-client-error.js.map +0 -1
- package/dist/esm/utils/http/custom-errors/client-http-client-error.js.map +0 -1
- package/dist/esm/utils/http/custom-errors/general-http-client-error.js.map +0 -1
- package/dist/esm/utils/http/custom-errors/http-client-error.js.map +0 -1
- package/dist/esm/utils/http/custom-errors/index.js.map +0 -1
- package/dist/esm/utils/http/custom-errors/server-http-client-error.js.map +0 -1
- package/dist/esm/utils/http/custom-errors/unkown-http-client-error.js.map +0 -1
- package/dist/esm/utils/http/http-client-got.js.map +0 -1
- package/dist/esm/utils/http/index.js.map +0 -1
- package/dist/esm/utils/image-resize-errors/image-resizing-base-error.js.map +0 -1
- package/dist/esm/utils/image-resize-errors/index.js.map +0 -1
- package/dist/esm/utils/path.js.map +0 -1
- package/dist/esm/utils/proxy/proxy-builder.js.map +0 -1
- package/dist/esm/utils/resized-image-interface.js.map +0 -1
- package/dist/esm/utils/transformations.js.map +0 -1
- package/dist/example_projects_templates/configs/jasmine.config.json +0 -12
|
@@ -3,7 +3,7 @@ import { DetectedElement } from '../core/model/annotation-result/detected-elemen
|
|
|
3
3
|
export declare enum Separators {
|
|
4
4
|
STRING = "<|string|>"
|
|
5
5
|
}
|
|
6
|
-
export declare type
|
|
6
|
+
export declare type INTERSECTION_AREA = 'element_center_line' | 'element_edge_area' | 'display_edge_area';
|
|
7
7
|
export declare type PC_KEY = 'backspace' | 'delete' | 'enter' | 'tab' | 'escape' | 'up' | 'down' | 'right' | 'left' | 'home' | 'end' | 'pageup' | 'pagedown' | 'f1' | 'f2' | 'f3' | 'f4' | 'f5' | 'f6' | 'f7' | 'f8' | 'f9' | 'f10' | 'f11' | 'f12' | 'space' | '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' | 'A' | 'B' | 'C' | 'D' | 'E' | 'F' | 'G' | 'H' | 'I' | 'J' | 'K' | 'L' | 'M' | 'N' | 'O' | 'P' | 'Q' | 'R' | 'S' | 'T' | 'U' | 'V' | 'W' | 'X' | 'Y' | 'Z' | '!' | '"' | '#' | '$' | '%' | '&' | "'" | '(' | ')' | '*' | '+' | ',' | '-' | '.' | '/' | ':' | ';' | '<' | '=' | '>' | '?' | '@' | '[' | '\\' | ']' | '^' | '_' | '`' | '{' | '|' | '}' | '~ ';
|
|
8
8
|
export declare type ANDROID_KEY = 'home' | 'back' | 'call' | 'endcall' | '0' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | 'star' | 'pound' | 'dpad_up' | 'dpad_down' | 'dpad_left' | 'dpad_right' | 'dpad_center' | 'volume_up' | 'volume_down' | 'power' | 'camera' | 'clear' | 'a' | 'b' | 'c' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' | 'n' | 'o' | 'p' | 'q' | 'r' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' | 'comma' | 'period' | 'alt_left' | 'alt_right' | 'shift_left' | 'shift_right' | 'tab' | 'space' | 'sym' | 'explorer' | 'envelope' | 'enter' | 'del' | 'grave' | 'minus' | 'equals' | 'left_bracket' | 'right_bracket' | 'backslash' | 'semicolon' | 'apostrophe' | 'slash' | 'at' | 'num' | 'headsethook' | 'focus' | 'plus' | 'menu' | 'notification' | 'search' | 'media_play_pause' | 'media_stop' | 'media_next' | 'media_previous' | 'media_rewind' | 'media_fast_forward' | 'mute' | 'page_up' | 'page_down' | 'switch_charset' | 'escape' | 'forward_del' | 'ctrl_left' | 'ctrl_right' | 'caps_lock' | 'scroll_lock' | 'function' | 'break' | 'move_home' | 'move_end' | 'insert' | 'forward' | 'media_play' | 'media_pause' | 'media_close' | 'media_eject' | 'media_record' | 'f1' | 'f2' | 'f3' | 'f4' | 'f5' | 'f6' | 'f7' | 'f8' | 'f9' | 'f10' | 'f11' | 'f12' | 'num_lock' | 'numpad_0' | 'numpad_1' | 'numpad_2' | 'numpad_3' | 'numpad_4' | 'numpad_5' | 'numpad_6' | 'numpad_7' | 'numpad_8' | 'numpad_9' | 'numpad_divide' | 'numpad_multiply' | 'numpad_subtract' | 'numpad_add' | 'numpad_dot' | 'numpad_comma' | 'numpad_enter' | 'numpad_equals' | 'numpad_left_paren' | 'numpad_right_paren' | 'volume_mute' | 'info' | 'channel_up' | 'channel_down' | 'zoom_in' | 'zoom_out' | 'window' | 'guide' | 'bookmark' | 'captions' | 'settings' | 'app_switch' | 'language_switch' | 'contacts' | 'calendar' | 'music' | 'calculator' | 'assist' | 'brightness_down' | 'brightness_up' | 'media_audio_track' | 'sleep' | 'wakeup' | 'pairing' | 'media_top_menu' | 'last_channel' | 'tv_data_service' | 'voice_assist' | 'help' | 'navigate_previous' | 'navigate_next' | 'navigate_in' | 'navigate_out' | 'dpad_up_left' | 'dpad_down_left' | 'dpad_up_right' | 'dpad_down_right' | 'media_skip_forward' | 'media_skip_backward' | 'media_step_forward' | 'media_step_backward' | 'soft_sleep' | 'cut' | 'copy' | 'paste' | 'all_apps' | 'refresh';
|
|
9
9
|
export declare type MODIFIER_KEY = 'command' | 'alt' | 'control' | 'shift' | 'right_shift';
|
|
@@ -121,6 +121,7 @@ export declare class FluentFilters extends FluentBase {
|
|
|
121
121
|
*/
|
|
122
122
|
cell(row_index: number, column_index: number): FluentFiltersOrRelations;
|
|
123
123
|
/**
|
|
124
|
+
* Filters for a UI element 'table'.
|
|
124
125
|
*
|
|
125
126
|
* @return {FluentFiltersOrRelations}
|
|
126
127
|
*/
|
|
@@ -145,6 +146,8 @@ export declare class FluentFilters extends FluentBase {
|
|
|
145
146
|
* await aui.click().text().withTextRegex('\b[Ss]\w+').exec();
|
|
146
147
|
* ```
|
|
147
148
|
*
|
|
149
|
+
* @param {string} [text] - A text to be matched.
|
|
150
|
+
*
|
|
148
151
|
* @return {FluentFiltersOrRelations}
|
|
149
152
|
*/
|
|
150
153
|
text(text?: string): FluentFiltersOrRelations;
|
|
@@ -166,9 +169,9 @@ export declare class FluentFilters extends FluentBase {
|
|
|
166
169
|
*/
|
|
167
170
|
icon(): FluentFiltersOrRelations;
|
|
168
171
|
/**
|
|
169
|
-
* Filters for a 'custom element', that is a UI element
|
|
172
|
+
* Filters for a 'custom element', that is a UI element that is defined by providing an image and other parameters such as degree of rotation. It allows filtering for a UI element based on an image instead of using text or element descriptions like `button().withText('Submit')` in `await aui.click().button().withText('Submit').exec()`.
|
|
170
173
|
*
|
|
171
|
-
* See the tutorial - [Custom Element](https://docs.askui.com/docs/general/
|
|
174
|
+
* See the tutorial - [Custom Element](https://docs.askui.com/docs/general/Element%20Selection/custom-elements) for more details.
|
|
172
175
|
*
|
|
173
176
|
* **Example**
|
|
174
177
|
* ```typescript
|
|
@@ -177,7 +180,7 @@ export declare class FluentFilters extends FluentBase {
|
|
|
177
180
|
* .customElement({
|
|
178
181
|
* customImage: './logo.png', // required
|
|
179
182
|
* name: 'myLogo', // optional
|
|
180
|
-
* threshold: 0.
|
|
183
|
+
* threshold: 0.5, // optional, defaults to 0.5
|
|
181
184
|
* stopThreshold: 0.9, // optional, defaults to 0.9
|
|
182
185
|
* rotationDegreePerStep: 0, // optional, defaults to 0
|
|
183
186
|
* imageCompareFormat: 'grayscale', // optional, defaults to 'grayscale'
|
|
@@ -193,13 +196,13 @@ export declare class FluentFilters extends FluentBase {
|
|
|
193
196
|
* - **name** (*`string`, optional*):
|
|
194
197
|
* - A unique name that can be used for filtering for the custom element. If not given, any text inside the custom image will be detected via OCR.
|
|
195
198
|
* - **threshold** (*`number`, optional*):
|
|
196
|
-
* - A threshold for how much a UI element needs to be similar to the custom element as defined by the image. Takes values between `0.0` (== all elements are recognized as the custom element which is probably not what you want) and `1.0` (== elements need to look exactly like the `customImage` which is unlikely to be achieved as even minor differences count). Defaults to `0.
|
|
199
|
+
* - A threshold for how much a UI element needs to be similar to the custom element as defined by the image. Takes values between `0.0` (== all elements are recognized as the custom element which is probably not what you want) and `1.0` (== elements need to look exactly like the `customImage` which is unlikely to be achieved as even minor differences count). Defaults to `0.5`.
|
|
197
200
|
* - **stopThreshold** (*`number`, optional*):
|
|
198
201
|
* - A threshold for when to stop searching for UI elements similar to the custom element. As soon as UI elements have been found that are at least as similar as the `stopThreshold`, the search is going to stop. After that elements are filtered using the `threshold`. Because of that the `stopThreshold` should be greater than or equal to `threshold`. It is primarily to be used as a speed improvement (by lowering the value). Takes values between `0.0` and `1.0`. Defaults to `0.9`.
|
|
199
202
|
* - **rotationDegreePerStep** (*`number`, optional*):
|
|
200
203
|
* - Step size in rotation degree. Rotates the custom image by this step size until 360° is exceeded. The range is from `0` to `360`. Defaults to `0`.
|
|
201
204
|
* - **imageCompareFormat** (*`'RGB' | 'grayscale' | 'edges'`, optional*):
|
|
202
|
-
* - The color compare style. 'edges' compares only edges, 'greyscale' compares the brightness of each pixel whereas 'RGB' compares all three colors (red, green, blue). Defaults to 'grayscale'
|
|
205
|
+
* - The color compare style. `'edges'` compares only edges, `'greyscale'` compares the brightness of each pixel whereas `'RGB'` compares all three colors (red, green, blue). Defaults to `'grayscale'`.
|
|
203
206
|
*
|
|
204
207
|
*
|
|
205
208
|
* @param {CustomElementJson} customElement - The custom element to filter for.
|
|
@@ -208,7 +211,13 @@ export declare class FluentFilters extends FluentBase {
|
|
|
208
211
|
*/
|
|
209
212
|
customElement(customElement: CustomElementJson): FluentFiltersOrRelations;
|
|
210
213
|
/**
|
|
211
|
-
* Detects an AI Element created with the workflow
|
|
214
|
+
* Detects an AI Element created with the [snipping workflow](https://docs.askui.com/docs/general/Components/aielement#snipping-workflow).
|
|
215
|
+
*
|
|
216
|
+
* **Examples:**
|
|
217
|
+
*
|
|
218
|
+
* ```typescript
|
|
219
|
+
* await aui.click().aiElement('askui-logo').exec();
|
|
220
|
+
* ```
|
|
212
221
|
*
|
|
213
222
|
* @param {string} aiElementName - Name of the AI Element.
|
|
214
223
|
*
|
|
@@ -279,12 +288,13 @@ export declare class FluentFilters extends FluentBase {
|
|
|
279
288
|
* 'other' === withText('text') => false
|
|
280
289
|
*
|
|
281
290
|
* // optional parameter: similarity_score
|
|
282
|
-
* '978-0-201-00650-6' == withText(
|
|
283
|
-
* '978-0-201-00650-6' == withText(
|
|
291
|
+
* '978-0-201-00650-6' == withText("978-0-201-00", 90) => false with 82.76 < 90 similarity
|
|
292
|
+
* '978-0-201-00650-6' == withText("978-0-201-00650", 90) => true with 93.75 > 90 similarity
|
|
284
293
|
* ```
|
|
285
294
|
* 
|
|
286
295
|
*
|
|
287
296
|
* @param {string} text - A text to be matched.
|
|
297
|
+
* @param {number} [similarityScore=70] - Similarity score minimum value, it should be between `0` and `100`.
|
|
288
298
|
*
|
|
289
299
|
* @return {FluentFiltersOrRelations}
|
|
290
300
|
*/
|
|
@@ -302,7 +312,7 @@ export declare class FluentFilters extends FluentBase {
|
|
|
302
312
|
* await aui.get().text().withTextRegex('\b[Ss]\w+').exec()
|
|
303
313
|
* ```
|
|
304
314
|
*
|
|
305
|
-
* 
|
|
306
316
|
*
|
|
307
317
|
*
|
|
308
318
|
*
|
|
@@ -327,7 +337,7 @@ export declare class FluentFilters extends FluentBase {
|
|
|
327
337
|
* await aui.moveMouseTo().text().withExactText('Password').exec()
|
|
328
338
|
* ```
|
|
329
339
|
*
|
|
330
|
-
* 
|
|
331
341
|
*
|
|
332
342
|
*
|
|
333
343
|
*
|
|
@@ -363,10 +373,10 @@ export declare class FluentFilters extends FluentBase {
|
|
|
363
373
|
* **Important: _Matching only returns the best matching element when you use it with `get()`_**
|
|
364
374
|
*
|
|
365
375
|
* A bit of playing around to find a matching description is sometimes needed:
|
|
366
|
-
*
|
|
376
|
+
* For example, `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
|
|
367
377
|
* Generally, the more detail the better.
|
|
368
378
|
*
|
|
369
|
-
* We also recommend to not restrict the type of element by using the
|
|
379
|
+
* We also recommend to not restrict the type of element by using the general selector `element()` as shown in the examples below.
|
|
370
380
|
*
|
|
371
381
|
* **Examples:**
|
|
372
382
|
* ```typescript
|
|
@@ -520,111 +530,265 @@ export declare class FluentFiltersOrRelations extends FluentFilters {
|
|
|
520
530
|
/**
|
|
521
531
|
* Filters for an element right of another element.
|
|
522
532
|
*
|
|
523
|
-
* Takes an optional parameter `index` to select the
|
|
533
|
+
* Takes an optional parameter `index` to select the nth element (defaults to `0`).
|
|
534
|
+
*
|
|
535
|
+
* Takes an optional parameter `intersection_area` to specify which elements right of the other element are filtered for based on their vertical position (y-coordinates of bounding box):
|
|
536
|
+
* - `"element_center_line"` - considered right of the other element if element's bounding box intersects with a horizontal line passing through the center of the other element
|
|
537
|
+
* - `"element_edge_area"` - considered right of the other element if element's bounding box intersects with an area between the top and the bottom edge of the other element
|
|
538
|
+
* - `"display_edge_area"` - considered right of the other element no matter where it is placed vertically on the screen (y-axis)
|
|
524
539
|
*
|
|
525
540
|
* **Examples:**
|
|
526
541
|
* ```typescript
|
|
527
|
-
*
|
|
528
|
-
* |
|
|
529
|
-
*
|
|
542
|
+
* ---------- --------- ---------
|
|
543
|
+
* | button | | text0 | | text3 |
|
|
544
|
+
* ---------- --------- --------- ---------
|
|
545
|
+
* | text1 | ---------
|
|
546
|
+
* --------- | text2 |
|
|
547
|
+
* ---------
|
|
548
|
+
*
|
|
549
|
+
* // General explanation for element_center_line
|
|
550
|
+
* // This will find text0 and text3
|
|
551
|
+
* ...text().rightOf(..., 'element_center_line').button()
|
|
552
|
+
*
|
|
553
|
+
* // General explanation for element_edge_area
|
|
554
|
+
* // This will find text0, text1 and text3
|
|
555
|
+
* ...text().rightOf(..., 'element_edge_area').button()
|
|
556
|
+
*
|
|
557
|
+
* // General explanation and display_edge_area
|
|
558
|
+
* // This will find text0, text1, text2 and text3
|
|
559
|
+
* ...text().rightOf(..., 'display_edge_area').button()
|
|
560
|
+
*
|
|
561
|
+
* // More examples:
|
|
562
|
+
* // Returns text0 because it is the first element rightOf button
|
|
563
|
+
* ...text().rightOf().button()
|
|
564
|
+
* ...text().rightOf(0).button()
|
|
565
|
+
* ...text().rightOf(0, 'element_edge_area').button()
|
|
530
566
|
*
|
|
531
|
-
* // Returns
|
|
532
|
-
*
|
|
533
|
-
*
|
|
534
|
-
*
|
|
535
|
-
*
|
|
536
|
-
* // Returns
|
|
537
|
-
*
|
|
567
|
+
* // Returns text3 because it is the second text touched by the
|
|
568
|
+
* // horizontal line from the center of button
|
|
569
|
+
* // Notice: text1 is not touched!
|
|
570
|
+
* ...text().rightOf(1, 'element_center_line').button()
|
|
571
|
+
*
|
|
572
|
+
* // Returns text3 because it is the third text touched by the
|
|
573
|
+
* // vertical area rightOf the y-axis of button
|
|
574
|
+
* // Notice: text2 is not touched!
|
|
575
|
+
* ...text().rightOf(2, 'element_edge_area').button()
|
|
576
|
+
*
|
|
577
|
+
* // Returns text2 because it is the third element rightOf button
|
|
578
|
+
* ...text().rightOf(2, 'display_edge_area').button()
|
|
579
|
+
*
|
|
580
|
+
* // Returns no element because button is rightOf the texts
|
|
581
|
+
* ...button().rightOf().text()
|
|
538
582
|
* ```
|
|
539
583
|
* 
|
|
540
584
|
*
|
|
585
|
+
* @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
|
|
586
|
+
* @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
|
|
587
|
+
*
|
|
541
588
|
* @return {FluentFilters}
|
|
542
589
|
*/
|
|
543
|
-
rightOf(
|
|
590
|
+
rightOf(index?: number, intersection_area?: INTERSECTION_AREA): FluentFilters;
|
|
544
591
|
/**
|
|
545
592
|
* Filters for an element left of another element.
|
|
546
593
|
*
|
|
547
|
-
* Takes an optional parameter `index` to select the
|
|
594
|
+
* Takes an optional parameter `index` to select the nth element (defaults to `0`).
|
|
595
|
+
*
|
|
596
|
+
* Takes an optional parameter `intersection_area` to specify which elements left of the other element are filtered for based on their vertical position (y-coordinates of bounding box):
|
|
597
|
+
* - `"element_center_line"` - considered left of the other element if element's bounding box intersects with a horizontal line passing through the center of the other element
|
|
598
|
+
* - `"element_edge_area"` - considered left of the other element if element's bounding box intersects with an area between the top and the bottom edge of the other element
|
|
599
|
+
* - `"display_edge_area"` - considered left of the other element no matter where it is placed vertically on the screen (y-axis)
|
|
548
600
|
*
|
|
549
601
|
* **Examples:**
|
|
550
602
|
* ```typescript
|
|
551
|
-
*
|
|
552
|
-
* |
|
|
553
|
-
*
|
|
603
|
+
* --------- --------- ----------
|
|
604
|
+
* | text3 | | text0 | | button |
|
|
605
|
+
* --------- --------- --------- ----------
|
|
606
|
+
* --------- | text1 |
|
|
607
|
+
* | text2 | ---------
|
|
608
|
+
* ---------
|
|
609
|
+
*
|
|
610
|
+
* // General explanation for element_center_line
|
|
611
|
+
* // This will find text0 and text3
|
|
612
|
+
* ...text().leftOf(..., 'element_center_line').button()
|
|
613
|
+
*
|
|
614
|
+
* // General explanation for element_edge_area
|
|
615
|
+
* // This will find text0, text1 and text3
|
|
616
|
+
* ...text().leftOf(..., 'element_edge_area').button()
|
|
617
|
+
*
|
|
618
|
+
* // General explanation and display_edge_area
|
|
619
|
+
* // This will find text0, text1, text2 and text3
|
|
620
|
+
* ...text().leftOf(..., 'display_edge_area').button()
|
|
621
|
+
*
|
|
622
|
+
* // More examples:
|
|
623
|
+
* // Returns text0 because it is the first element leftOf button
|
|
624
|
+
* ...text().leftOf().button()
|
|
625
|
+
* ...text().leftOf(0).button()
|
|
626
|
+
* ...text().leftOf(0, 'element_edge_area').button()
|
|
627
|
+
*
|
|
628
|
+
* // Returns text3 because it is the second text touched by the
|
|
629
|
+
* // horizontal line from the center of button
|
|
630
|
+
* // Notice: text1 is not touched!
|
|
631
|
+
* ...text().leftOf(1, 'element_center_line').button()
|
|
554
632
|
*
|
|
555
|
-
* // Returns
|
|
556
|
-
*
|
|
557
|
-
*
|
|
558
|
-
*
|
|
559
|
-
*
|
|
560
|
-
* // Returns
|
|
561
|
-
* ...
|
|
633
|
+
* // Returns text3 because it is the third text touched by the
|
|
634
|
+
* // vertical area leftOf the y-axis of button
|
|
635
|
+
* // Notice: text2 is not touched!
|
|
636
|
+
* ...text().leftOf(2, 'element_edge_area').button()
|
|
637
|
+
*
|
|
638
|
+
* // Returns text2 because it is the third element leftOf button
|
|
639
|
+
* ...text().leftOf(2, 'display_edge_area').button()
|
|
640
|
+
*
|
|
641
|
+
* // Returns no element because button is rightOf the texts
|
|
642
|
+
* ...button().leftOf().text()
|
|
562
643
|
* ```
|
|
563
644
|
* 
|
|
564
645
|
*
|
|
646
|
+
* @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
|
|
647
|
+
* @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
|
|
648
|
+
*
|
|
565
649
|
* @return {FluentFilters}
|
|
566
650
|
*/
|
|
567
|
-
leftOf(
|
|
651
|
+
leftOf(index?: number, intersection_area?: INTERSECTION_AREA): FluentFilters;
|
|
568
652
|
/**
|
|
569
653
|
* Filters for an element below another element.
|
|
570
654
|
*
|
|
571
|
-
* Takes an optional parameter `index` to select the
|
|
655
|
+
* Takes an optional parameter `index` to select the nth element (defaults to `0`).
|
|
656
|
+
*
|
|
657
|
+
* Takes an optional parameter `intersection_area` to specify which elements below of the other element are filtered for based on their horizontal position (y-coordinates of bounding box):
|
|
658
|
+
* - `"element_center_line"` - considered below of the other element if element's bounding box intersects with a vertical line passing through the center of the other element
|
|
659
|
+
* - `"element_edge_area"` - considered below of the other element if element's bounding box intersects with an area between the left and the right edge of the other element
|
|
660
|
+
* - `"display_edge_area"` - considered below of the other element no matter where it is placed horizontally on the screen (y-axis)
|
|
572
661
|
*
|
|
573
662
|
* **Examples:**
|
|
574
663
|
* ```typescript
|
|
575
|
-
*
|
|
576
|
-
* |
|
|
577
|
-
*
|
|
578
|
-
*
|
|
579
|
-
* |
|
|
580
|
-
*
|
|
581
|
-
*
|
|
582
|
-
*
|
|
583
|
-
*
|
|
664
|
+
* ------------
|
|
665
|
+
* | text |
|
|
666
|
+
* ------------
|
|
667
|
+
* ------------
|
|
668
|
+
* | button0 |
|
|
669
|
+
* ------------
|
|
670
|
+
* -----------
|
|
671
|
+
* | button1 |
|
|
672
|
+
* -----------
|
|
673
|
+
* -----------
|
|
674
|
+
* | button2 |
|
|
675
|
+
* -----------
|
|
676
|
+
* ------------
|
|
677
|
+
* | button3 |
|
|
678
|
+
* ------------
|
|
584
679
|
*
|
|
680
|
+
* // General explanation for element_center_line
|
|
681
|
+
* // This will find button0 and button3
|
|
682
|
+
* ...button().below(..., 'element_center_line').text()
|
|
683
|
+
*
|
|
684
|
+
* // General explanation for element_edge_area
|
|
685
|
+
* // This will find button0, button1 and button3
|
|
686
|
+
* ...button().below(..., 'element_edge_area').text()
|
|
687
|
+
*
|
|
688
|
+
* // General explanation and display_edge_area
|
|
689
|
+
* // This will find button0, button1, button2 and button3
|
|
690
|
+
* ...button().below(..., 'display_edge_area').text()
|
|
691
|
+
*
|
|
692
|
+
* // More examples:
|
|
585
693
|
* // Returns button0 because button0 is the first button below text
|
|
586
694
|
* ...button().below().text()
|
|
587
695
|
* ...button().below(0).text()
|
|
588
|
-
*
|
|
589
|
-
*
|
|
590
|
-
* // Returns
|
|
696
|
+
* ...button().below(0, 'element_edge_area').text()
|
|
697
|
+
*
|
|
698
|
+
* // Returns button3 because it is the second button touched by the
|
|
699
|
+
* // vertical line from the center of text
|
|
700
|
+
* // Notice: button1 is not touched
|
|
701
|
+
* ...button().below(1, 'element_center_line').text()
|
|
702
|
+
*
|
|
703
|
+
* // Returns button3 because it is the third button touched by the
|
|
704
|
+
* // vertical area below the x-axis of text
|
|
705
|
+
* // Notice: button2 is not touched!
|
|
706
|
+
* ...button().below(2, 'element_edge_area').text()
|
|
707
|
+
*
|
|
708
|
+
* // Returns button2 because it is the third element below text
|
|
709
|
+
* ...button().below(2, 'display_edge_area').text()
|
|
710
|
+
*
|
|
711
|
+
* // Returns no element because text is above the buttons
|
|
591
712
|
* ...text().below().button()
|
|
592
713
|
* ```
|
|
593
714
|
* 
|
|
594
715
|
*
|
|
716
|
+
* @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
|
|
717
|
+
* @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
|
|
718
|
+
*
|
|
595
719
|
* @return {FluentFilters}
|
|
596
720
|
*/
|
|
597
|
-
below(
|
|
721
|
+
below(index?: number, intersection_area?: INTERSECTION_AREA): FluentFilters;
|
|
598
722
|
/**
|
|
599
723
|
* Filters for an element above another element.
|
|
600
724
|
*
|
|
601
|
-
* Takes an optional parameter `index` to select the
|
|
602
|
-
*
|
|
603
|
-
*
|
|
604
|
-
*
|
|
605
|
-
*
|
|
606
|
-
*
|
|
607
|
-
*
|
|
608
|
-
*
|
|
609
|
-
*
|
|
610
|
-
*
|
|
611
|
-
*
|
|
612
|
-
*
|
|
613
|
-
*
|
|
614
|
-
*
|
|
615
|
-
*
|
|
725
|
+
* Takes an optional parameter `index` to select the nth element (defaults to `0`).
|
|
726
|
+
*
|
|
727
|
+
* Takes an optional parameter `intersection_area` to specify which elements above of the other element are filtered for based on their horizontal position (y-coordinates of bounding box):
|
|
728
|
+
* - `"element_center_line"` - considered above of the other element if element's bounding box intersects with a vertical line passing through the center of the other element
|
|
729
|
+
* - `"element_edge_area"` - considered above of the other element if element's bounding box intersects with an area between the left and the right edge of the other element
|
|
730
|
+
* - `"display_edge_area"` - considered above of the other element no matter where it is placed horizontally on the screen (y-axis)
|
|
731
|
+
*
|
|
732
|
+
* **Examples:**
|
|
733
|
+
* ```typescript
|
|
734
|
+
* ------------
|
|
735
|
+
* | text3 |
|
|
736
|
+
* ------------
|
|
737
|
+
* ------------
|
|
738
|
+
* | text2 |
|
|
739
|
+
* ------------
|
|
740
|
+
* ------------
|
|
741
|
+
* | text1 |
|
|
742
|
+
* ------------
|
|
743
|
+
* ------------
|
|
744
|
+
* | text0 |
|
|
745
|
+
* ------------
|
|
746
|
+
* ------------
|
|
747
|
+
* | button |
|
|
748
|
+
* ------------
|
|
749
|
+
*
|
|
750
|
+
* // General explanation for element_center_line
|
|
751
|
+
* // This will find text0 and text3
|
|
752
|
+
* ...text().above(..., 'element_center_line').button()
|
|
753
|
+
*
|
|
754
|
+
* // General explanation for element_edge_area
|
|
755
|
+
* // This will find text0, text1 and text3
|
|
756
|
+
* ...text().above(..., 'element_edge_area').button()
|
|
757
|
+
*
|
|
758
|
+
* // General explanation and display_edge_area
|
|
759
|
+
* // This will find text0, text1, text2 and text3
|
|
760
|
+
* ...text().above(..., 'display_edge_area').button()
|
|
761
|
+
*
|
|
762
|
+
* // More examples:
|
|
763
|
+
* // Returns text0 because it is the first element above button
|
|
616
764
|
* ...text().above().button()
|
|
617
765
|
* ...text().above(0).button()
|
|
618
|
-
*
|
|
619
|
-
*
|
|
620
|
-
* // Returns
|
|
766
|
+
* ...text().above(0, 'element_edge_area').button()
|
|
767
|
+
*
|
|
768
|
+
* // Returns text3 because it is the second text touched by the
|
|
769
|
+
* // vertical line from the center of button
|
|
770
|
+
* // Notice: text1 is not touched!
|
|
771
|
+
* ...text().above(1, 'element_center_line').button()
|
|
772
|
+
*
|
|
773
|
+
* // Returns text3 because it is the third text touched by the
|
|
774
|
+
* // vertical area above the x-axis of button
|
|
775
|
+
* // Notice: text2 is not touched!
|
|
776
|
+
* ...text().above(2, 'element_edge_area').button()
|
|
777
|
+
*
|
|
778
|
+
* // Returns text2 because it is the third element above button
|
|
779
|
+
* ...text().above(2, 'display_edge_area').button()
|
|
780
|
+
*
|
|
781
|
+
* // Returns no element because button is below the texts
|
|
621
782
|
* ...button().above().text()
|
|
622
783
|
* ```
|
|
623
784
|
* 
|
|
624
785
|
*
|
|
786
|
+
* @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
|
|
787
|
+
* @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
|
|
788
|
+
*
|
|
625
789
|
* @return {FluentFilters}
|
|
626
790
|
*/
|
|
627
|
-
above(
|
|
791
|
+
above(index?: number, intersection_area?: INTERSECTION_AREA): FluentFilters;
|
|
628
792
|
/**
|
|
629
793
|
* Filters for an element nearest to another element.
|
|
630
794
|
*
|
|
@@ -767,6 +931,7 @@ export declare class FluentFiltersCondition extends FluentBase {
|
|
|
767
931
|
*/
|
|
768
932
|
cell(row_index: number, column_index: number): FluentFiltersOrRelationsCondition;
|
|
769
933
|
/**
|
|
934
|
+
* Filters for a UI element 'table'.
|
|
770
935
|
*
|
|
771
936
|
* @return {FluentFiltersOrRelationsCondition}
|
|
772
937
|
*/
|
|
@@ -791,6 +956,8 @@ export declare class FluentFiltersCondition extends FluentBase {
|
|
|
791
956
|
* await aui.click().text().withTextRegex('\b[Ss]\w+').exec();
|
|
792
957
|
* ```
|
|
793
958
|
*
|
|
959
|
+
* @param {string} [text] - A text to be matched.
|
|
960
|
+
*
|
|
794
961
|
* @return {FluentFiltersOrRelationsCondition}
|
|
795
962
|
*/
|
|
796
963
|
text(text?: string): FluentFiltersOrRelationsCondition;
|
|
@@ -812,9 +979,9 @@ export declare class FluentFiltersCondition extends FluentBase {
|
|
|
812
979
|
*/
|
|
813
980
|
icon(): FluentFiltersOrRelationsCondition;
|
|
814
981
|
/**
|
|
815
|
-
* Filters for a 'custom element', that is a UI element
|
|
982
|
+
* Filters for a 'custom element', that is a UI element that is defined by providing an image and other parameters such as degree of rotation. It allows filtering for a UI element based on an image instead of using text or element descriptions like `button().withText('Submit')` in `await aui.click().button().withText('Submit').exec()`.
|
|
816
983
|
*
|
|
817
|
-
* See the tutorial - [Custom Element](https://docs.askui.com/docs/general/
|
|
984
|
+
* See the tutorial - [Custom Element](https://docs.askui.com/docs/general/Element%20Selection/custom-elements) for more details.
|
|
818
985
|
*
|
|
819
986
|
* **Example**
|
|
820
987
|
* ```typescript
|
|
@@ -823,7 +990,7 @@ export declare class FluentFiltersCondition extends FluentBase {
|
|
|
823
990
|
* .customElement({
|
|
824
991
|
* customImage: './logo.png', // required
|
|
825
992
|
* name: 'myLogo', // optional
|
|
826
|
-
* threshold: 0.
|
|
993
|
+
* threshold: 0.5, // optional, defaults to 0.5
|
|
827
994
|
* stopThreshold: 0.9, // optional, defaults to 0.9
|
|
828
995
|
* rotationDegreePerStep: 0, // optional, defaults to 0
|
|
829
996
|
* imageCompareFormat: 'grayscale', // optional, defaults to 'grayscale'
|
|
@@ -839,13 +1006,13 @@ export declare class FluentFiltersCondition extends FluentBase {
|
|
|
839
1006
|
* - **name** (*`string`, optional*):
|
|
840
1007
|
* - A unique name that can be used for filtering for the custom element. If not given, any text inside the custom image will be detected via OCR.
|
|
841
1008
|
* - **threshold** (*`number`, optional*):
|
|
842
|
-
* - A threshold for how much a UI element needs to be similar to the custom element as defined by the image. Takes values between `0.0` (== all elements are recognized as the custom element which is probably not what you want) and `1.0` (== elements need to look exactly like the `customImage` which is unlikely to be achieved as even minor differences count). Defaults to `0.
|
|
1009
|
+
* - A threshold for how much a UI element needs to be similar to the custom element as defined by the image. Takes values between `0.0` (== all elements are recognized as the custom element which is probably not what you want) and `1.0` (== elements need to look exactly like the `customImage` which is unlikely to be achieved as even minor differences count). Defaults to `0.5`.
|
|
843
1010
|
* - **stopThreshold** (*`number`, optional*):
|
|
844
1011
|
* - A threshold for when to stop searching for UI elements similar to the custom element. As soon as UI elements have been found that are at least as similar as the `stopThreshold`, the search is going to stop. After that elements are filtered using the `threshold`. Because of that the `stopThreshold` should be greater than or equal to `threshold`. It is primarily to be used as a speed improvement (by lowering the value). Takes values between `0.0` and `1.0`. Defaults to `0.9`.
|
|
845
1012
|
* - **rotationDegreePerStep** (*`number`, optional*):
|
|
846
1013
|
* - Step size in rotation degree. Rotates the custom image by this step size until 360° is exceeded. The range is from `0` to `360`. Defaults to `0`.
|
|
847
1014
|
* - **imageCompareFormat** (*`'RGB' | 'grayscale' | 'edges'`, optional*):
|
|
848
|
-
* - The color compare style. 'edges' compares only edges, 'greyscale' compares the brightness of each pixel whereas 'RGB' compares all three colors (red, green, blue). Defaults to 'grayscale'
|
|
1015
|
+
* - The color compare style. `'edges'` compares only edges, `'greyscale'` compares the brightness of each pixel whereas `'RGB'` compares all three colors (red, green, blue). Defaults to `'grayscale'`.
|
|
849
1016
|
*
|
|
850
1017
|
*
|
|
851
1018
|
* @param {CustomElementJson} customElement - The custom element to filter for.
|
|
@@ -854,7 +1021,13 @@ export declare class FluentFiltersCondition extends FluentBase {
|
|
|
854
1021
|
*/
|
|
855
1022
|
customElement(customElement: CustomElementJson): FluentFiltersOrRelationsCondition;
|
|
856
1023
|
/**
|
|
857
|
-
* Detects an AI Element created with the workflow
|
|
1024
|
+
* Detects an AI Element created with the [snipping workflow](https://docs.askui.com/docs/general/Components/aielement#snipping-workflow).
|
|
1025
|
+
*
|
|
1026
|
+
* **Examples:**
|
|
1027
|
+
*
|
|
1028
|
+
* ```typescript
|
|
1029
|
+
* await aui.click().aiElement('askui-logo').exec();
|
|
1030
|
+
* ```
|
|
858
1031
|
*
|
|
859
1032
|
* @param {string} aiElementName - Name of the AI Element.
|
|
860
1033
|
*
|
|
@@ -925,12 +1098,13 @@ export declare class FluentFiltersCondition extends FluentBase {
|
|
|
925
1098
|
* 'other' === withText('text') => false
|
|
926
1099
|
*
|
|
927
1100
|
* // optional parameter: similarity_score
|
|
928
|
-
* '978-0-201-00650-6' == withText(
|
|
929
|
-
* '978-0-201-00650-6' == withText(
|
|
1101
|
+
* '978-0-201-00650-6' == withText("978-0-201-00", 90) => false with 82.76 < 90 similarity
|
|
1102
|
+
* '978-0-201-00650-6' == withText("978-0-201-00650", 90) => true with 93.75 > 90 similarity
|
|
930
1103
|
* ```
|
|
931
1104
|
* 
|
|
932
1105
|
*
|
|
933
1106
|
* @param {string} text - A text to be matched.
|
|
1107
|
+
* @param {number} [similarityScore=70] - Similarity score minimum value, it should be between `0` and `100`.
|
|
934
1108
|
*
|
|
935
1109
|
* @return {FluentFiltersOrRelationsCondition}
|
|
936
1110
|
*/
|
|
@@ -948,7 +1122,7 @@ export declare class FluentFiltersCondition extends FluentBase {
|
|
|
948
1122
|
* await aui.get().text().withTextRegex('\b[Ss]\w+').exec()
|
|
949
1123
|
* ```
|
|
950
1124
|
*
|
|
951
|
-
* 
|
|
952
1126
|
*
|
|
953
1127
|
*
|
|
954
1128
|
*
|
|
@@ -973,7 +1147,7 @@ export declare class FluentFiltersCondition extends FluentBase {
|
|
|
973
1147
|
* await aui.moveMouseTo().text().withExactText('Password').exec()
|
|
974
1148
|
* ```
|
|
975
1149
|
*
|
|
976
|
-
* 
|
|
977
1151
|
*
|
|
978
1152
|
*
|
|
979
1153
|
*
|
|
@@ -1009,10 +1183,10 @@ export declare class FluentFiltersCondition extends FluentBase {
|
|
|
1009
1183
|
* **Important: _Matching only returns the best matching element when you use it with `get()`_**
|
|
1010
1184
|
*
|
|
1011
1185
|
* A bit of playing around to find a matching description is sometimes needed:
|
|
1012
|
-
*
|
|
1186
|
+
* For example, `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
|
|
1013
1187
|
* Generally, the more detail the better.
|
|
1014
1188
|
*
|
|
1015
|
-
* We also recommend to not restrict the type of element by using the
|
|
1189
|
+
* We also recommend to not restrict the type of element by using the general selector `element()` as shown in the examples below.
|
|
1016
1190
|
*
|
|
1017
1191
|
* **Examples:**
|
|
1018
1192
|
* ```typescript
|
|
@@ -1166,111 +1340,265 @@ export declare class FluentFiltersOrRelationsCondition extends FluentFiltersCond
|
|
|
1166
1340
|
/**
|
|
1167
1341
|
* Filters for an element right of another element.
|
|
1168
1342
|
*
|
|
1169
|
-
* Takes an optional parameter `index` to select the
|
|
1343
|
+
* Takes an optional parameter `index` to select the nth element (defaults to `0`).
|
|
1344
|
+
*
|
|
1345
|
+
* Takes an optional parameter `intersection_area` to specify which elements right of the other element are filtered for based on their vertical position (y-coordinates of bounding box):
|
|
1346
|
+
* - `"element_center_line"` - considered right of the other element if element's bounding box intersects with a horizontal line passing through the center of the other element
|
|
1347
|
+
* - `"element_edge_area"` - considered right of the other element if element's bounding box intersects with an area between the top and the bottom edge of the other element
|
|
1348
|
+
* - `"display_edge_area"` - considered right of the other element no matter where it is placed vertically on the screen (y-axis)
|
|
1170
1349
|
*
|
|
1171
1350
|
* **Examples:**
|
|
1172
1351
|
* ```typescript
|
|
1173
|
-
*
|
|
1174
|
-
* |
|
|
1175
|
-
*
|
|
1352
|
+
* ---------- --------- ---------
|
|
1353
|
+
* | button | | text0 | | text3 |
|
|
1354
|
+
* ---------- --------- --------- ---------
|
|
1355
|
+
* | text1 | ---------
|
|
1356
|
+
* --------- | text2 |
|
|
1357
|
+
* ---------
|
|
1358
|
+
*
|
|
1359
|
+
* // General explanation for element_center_line
|
|
1360
|
+
* // This will find text0 and text3
|
|
1361
|
+
* ...text().rightOf(..., 'element_center_line').button()
|
|
1176
1362
|
*
|
|
1177
|
-
* //
|
|
1178
|
-
*
|
|
1179
|
-
* ...
|
|
1180
|
-
*
|
|
1181
|
-
*
|
|
1182
|
-
* //
|
|
1183
|
-
* ...
|
|
1363
|
+
* // General explanation for element_edge_area
|
|
1364
|
+
* // This will find text0, text1 and text3
|
|
1365
|
+
* ...text().rightOf(..., 'element_edge_area').button()
|
|
1366
|
+
*
|
|
1367
|
+
* // General explanation and display_edge_area
|
|
1368
|
+
* // This will find text0, text1, text2 and text3
|
|
1369
|
+
* ...text().rightOf(..., 'display_edge_area').button()
|
|
1370
|
+
*
|
|
1371
|
+
* // More examples:
|
|
1372
|
+
* // Returns text0 because it is the first element rightOf button
|
|
1373
|
+
* ...text().rightOf().button()
|
|
1374
|
+
* ...text().rightOf(0).button()
|
|
1375
|
+
* ...text().rightOf(0, 'element_edge_area').button()
|
|
1376
|
+
*
|
|
1377
|
+
* // Returns text3 because it is the second text touched by the
|
|
1378
|
+
* // horizontal line from the center of button
|
|
1379
|
+
* // Notice: text1 is not touched!
|
|
1380
|
+
* ...text().rightOf(1, 'element_center_line').button()
|
|
1381
|
+
*
|
|
1382
|
+
* // Returns text3 because it is the third text touched by the
|
|
1383
|
+
* // vertical area rightOf the y-axis of button
|
|
1384
|
+
* // Notice: text2 is not touched!
|
|
1385
|
+
* ...text().rightOf(2, 'element_edge_area').button()
|
|
1386
|
+
*
|
|
1387
|
+
* // Returns text2 because it is the third element rightOf button
|
|
1388
|
+
* ...text().rightOf(2, 'display_edge_area').button()
|
|
1389
|
+
*
|
|
1390
|
+
* // Returns no element because button is rightOf the texts
|
|
1391
|
+
* ...button().rightOf().text()
|
|
1184
1392
|
* ```
|
|
1185
1393
|
* 
|
|
1186
1394
|
*
|
|
1395
|
+
* @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
|
|
1396
|
+
* @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
|
|
1397
|
+
*
|
|
1187
1398
|
* @return {FluentFiltersCondition}
|
|
1188
1399
|
*/
|
|
1189
|
-
rightOf(
|
|
1400
|
+
rightOf(index?: number, intersection_area?: INTERSECTION_AREA): FluentFiltersCondition;
|
|
1190
1401
|
/**
|
|
1191
1402
|
* Filters for an element left of another element.
|
|
1192
1403
|
*
|
|
1193
|
-
* Takes an optional parameter `index` to select the
|
|
1404
|
+
* Takes an optional parameter `index` to select the nth element (defaults to `0`).
|
|
1405
|
+
*
|
|
1406
|
+
* Takes an optional parameter `intersection_area` to specify which elements left of the other element are filtered for based on their vertical position (y-coordinates of bounding box):
|
|
1407
|
+
* - `"element_center_line"` - considered left of the other element if element's bounding box intersects with a horizontal line passing through the center of the other element
|
|
1408
|
+
* - `"element_edge_area"` - considered left of the other element if element's bounding box intersects with an area between the top and the bottom edge of the other element
|
|
1409
|
+
* - `"display_edge_area"` - considered left of the other element no matter where it is placed vertically on the screen (y-axis)
|
|
1194
1410
|
*
|
|
1195
1411
|
* **Examples:**
|
|
1196
1412
|
* ```typescript
|
|
1197
|
-
*
|
|
1198
|
-
* |
|
|
1199
|
-
*
|
|
1413
|
+
* --------- --------- ----------
|
|
1414
|
+
* | text3 | | text0 | | button |
|
|
1415
|
+
* --------- --------- --------- ----------
|
|
1416
|
+
* --------- | text1 |
|
|
1417
|
+
* | text2 | ---------
|
|
1418
|
+
* ---------
|
|
1419
|
+
*
|
|
1420
|
+
* // General explanation for element_center_line
|
|
1421
|
+
* // This will find text0 and text3
|
|
1422
|
+
* ...text().leftOf(..., 'element_center_line').button()
|
|
1423
|
+
*
|
|
1424
|
+
* // General explanation for element_edge_area
|
|
1425
|
+
* // This will find text0, text1 and text3
|
|
1426
|
+
* ...text().leftOf(..., 'element_edge_area').button()
|
|
1200
1427
|
*
|
|
1201
|
-
* //
|
|
1202
|
-
*
|
|
1203
|
-
* ...
|
|
1204
|
-
*
|
|
1205
|
-
*
|
|
1206
|
-
* // Returns
|
|
1207
|
-
* ...
|
|
1428
|
+
* // General explanation and display_edge_area
|
|
1429
|
+
* // This will find text0, text1, text2 and text3
|
|
1430
|
+
* ...text().leftOf(..., 'display_edge_area').button()
|
|
1431
|
+
*
|
|
1432
|
+
* // More examples:
|
|
1433
|
+
* // Returns text0 because it is the first element leftOf button
|
|
1434
|
+
* ...text().leftOf().button()
|
|
1435
|
+
* ...text().leftOf(0).button()
|
|
1436
|
+
* ...text().leftOf(0, 'element_edge_area').button()
|
|
1437
|
+
*
|
|
1438
|
+
* // Returns text3 because it is the second text touched by the
|
|
1439
|
+
* // horizontal line from the center of button
|
|
1440
|
+
* // Notice: text1 is not touched!
|
|
1441
|
+
* ...text().leftOf(1, 'element_center_line').button()
|
|
1442
|
+
*
|
|
1443
|
+
* // Returns text3 because it is the third text touched by the
|
|
1444
|
+
* // vertical area leftOf the y-axis of button
|
|
1445
|
+
* // Notice: text2 is not touched!
|
|
1446
|
+
* ...text().leftOf(2, 'element_edge_area').button()
|
|
1447
|
+
*
|
|
1448
|
+
* // Returns text2 because it is the third element leftOf button
|
|
1449
|
+
* ...text().leftOf(2, 'display_edge_area').button()
|
|
1450
|
+
*
|
|
1451
|
+
* // Returns no element because button is rightOf the texts
|
|
1452
|
+
* ...button().leftOf().text()
|
|
1208
1453
|
* ```
|
|
1209
1454
|
* 
|
|
1210
1455
|
*
|
|
1456
|
+
* @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
|
|
1457
|
+
* @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
|
|
1458
|
+
*
|
|
1211
1459
|
* @return {FluentFiltersCondition}
|
|
1212
1460
|
*/
|
|
1213
|
-
leftOf(
|
|
1461
|
+
leftOf(index?: number, intersection_area?: INTERSECTION_AREA): FluentFiltersCondition;
|
|
1214
1462
|
/**
|
|
1215
1463
|
* Filters for an element below another element.
|
|
1216
1464
|
*
|
|
1217
|
-
* Takes an optional parameter `index` to select the
|
|
1465
|
+
* Takes an optional parameter `index` to select the nth element (defaults to `0`).
|
|
1466
|
+
*
|
|
1467
|
+
* Takes an optional parameter `intersection_area` to specify which elements below of the other element are filtered for based on their horizontal position (y-coordinates of bounding box):
|
|
1468
|
+
* - `"element_center_line"` - considered below of the other element if element's bounding box intersects with a vertical line passing through the center of the other element
|
|
1469
|
+
* - `"element_edge_area"` - considered below of the other element if element's bounding box intersects with an area between the left and the right edge of the other element
|
|
1470
|
+
* - `"display_edge_area"` - considered below of the other element no matter where it is placed horizontally on the screen (y-axis)
|
|
1218
1471
|
*
|
|
1219
1472
|
* **Examples:**
|
|
1220
1473
|
* ```typescript
|
|
1221
|
-
*
|
|
1222
|
-
* |
|
|
1223
|
-
*
|
|
1224
|
-
*
|
|
1225
|
-
* |
|
|
1226
|
-
*
|
|
1227
|
-
*
|
|
1228
|
-
*
|
|
1229
|
-
*
|
|
1474
|
+
* ------------
|
|
1475
|
+
* | text |
|
|
1476
|
+
* ------------
|
|
1477
|
+
* ------------
|
|
1478
|
+
* | button0 |
|
|
1479
|
+
* ------------
|
|
1480
|
+
* -----------
|
|
1481
|
+
* | button1 |
|
|
1482
|
+
* -----------
|
|
1483
|
+
* -----------
|
|
1484
|
+
* | button2 |
|
|
1485
|
+
* -----------
|
|
1486
|
+
* ------------
|
|
1487
|
+
* | button3 |
|
|
1488
|
+
* ------------
|
|
1489
|
+
*
|
|
1490
|
+
* // General explanation for element_center_line
|
|
1491
|
+
* // This will find button0 and button3
|
|
1492
|
+
* ...button().below(..., 'element_center_line').text()
|
|
1493
|
+
*
|
|
1494
|
+
* // General explanation for element_edge_area
|
|
1495
|
+
* // This will find button0, button1 and button3
|
|
1496
|
+
* ...button().below(..., 'element_edge_area').text()
|
|
1497
|
+
*
|
|
1498
|
+
* // General explanation and display_edge_area
|
|
1499
|
+
* // This will find button0, button1, button2 and button3
|
|
1500
|
+
* ...button().below(..., 'display_edge_area').text()
|
|
1230
1501
|
*
|
|
1502
|
+
* // More examples:
|
|
1231
1503
|
* // Returns button0 because button0 is the first button below text
|
|
1232
1504
|
* ...button().below().text()
|
|
1233
1505
|
* ...button().below(0).text()
|
|
1234
|
-
*
|
|
1235
|
-
*
|
|
1236
|
-
* // Returns
|
|
1506
|
+
* ...button().below(0, 'element_edge_area').text()
|
|
1507
|
+
*
|
|
1508
|
+
* // Returns button3 because it is the second button touched by the
|
|
1509
|
+
* // vertical line from the center of text
|
|
1510
|
+
* // Notice: button1 is not touched
|
|
1511
|
+
* ...button().below(1, 'element_center_line').text()
|
|
1512
|
+
*
|
|
1513
|
+
* // Returns button3 because it is the third button touched by the
|
|
1514
|
+
* // vertical area below the x-axis of text
|
|
1515
|
+
* // Notice: button2 is not touched!
|
|
1516
|
+
* ...button().below(2, 'element_edge_area').text()
|
|
1517
|
+
*
|
|
1518
|
+
* // Returns button2 because it is the third element below text
|
|
1519
|
+
* ...button().below(2, 'display_edge_area').text()
|
|
1520
|
+
*
|
|
1521
|
+
* // Returns no element because text is above the buttons
|
|
1237
1522
|
* ...text().below().button()
|
|
1238
1523
|
* ```
|
|
1239
1524
|
* 
|
|
1240
1525
|
*
|
|
1526
|
+
* @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
|
|
1527
|
+
* @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
|
|
1528
|
+
*
|
|
1241
1529
|
* @return {FluentFiltersCondition}
|
|
1242
1530
|
*/
|
|
1243
|
-
below(
|
|
1531
|
+
below(index?: number, intersection_area?: INTERSECTION_AREA): FluentFiltersCondition;
|
|
1244
1532
|
/**
|
|
1245
1533
|
* Filters for an element above another element.
|
|
1246
1534
|
*
|
|
1247
|
-
* Takes an optional parameter `index` to select the
|
|
1248
|
-
*
|
|
1249
|
-
*
|
|
1250
|
-
*
|
|
1251
|
-
*
|
|
1252
|
-
*
|
|
1253
|
-
*
|
|
1254
|
-
*
|
|
1255
|
-
*
|
|
1256
|
-
*
|
|
1257
|
-
*
|
|
1258
|
-
*
|
|
1259
|
-
*
|
|
1260
|
-
*
|
|
1261
|
-
*
|
|
1535
|
+
* Takes an optional parameter `index` to select the nth element (defaults to `0`).
|
|
1536
|
+
*
|
|
1537
|
+
* Takes an optional parameter `intersection_area` to specify which elements above of the other element are filtered for based on their horizontal position (y-coordinates of bounding box):
|
|
1538
|
+
* - `"element_center_line"` - considered above of the other element if element's bounding box intersects with a vertical line passing through the center of the other element
|
|
1539
|
+
* - `"element_edge_area"` - considered above of the other element if element's bounding box intersects with an area between the left and the right edge of the other element
|
|
1540
|
+
* - `"display_edge_area"` - considered above of the other element no matter where it is placed horizontally on the screen (y-axis)
|
|
1541
|
+
*
|
|
1542
|
+
* **Examples:**
|
|
1543
|
+
* ```typescript
|
|
1544
|
+
* ------------
|
|
1545
|
+
* | text3 |
|
|
1546
|
+
* ------------
|
|
1547
|
+
* ------------
|
|
1548
|
+
* | text2 |
|
|
1549
|
+
* ------------
|
|
1550
|
+
* ------------
|
|
1551
|
+
* | text1 |
|
|
1552
|
+
* ------------
|
|
1553
|
+
* ------------
|
|
1554
|
+
* | text0 |
|
|
1555
|
+
* ------------
|
|
1556
|
+
* ------------
|
|
1557
|
+
* | button |
|
|
1558
|
+
* ------------
|
|
1559
|
+
*
|
|
1560
|
+
* // General explanation for element_center_line
|
|
1561
|
+
* // This will find text0 and text3
|
|
1562
|
+
* ...text().above(..., 'element_center_line').button()
|
|
1563
|
+
*
|
|
1564
|
+
* // General explanation for element_edge_area
|
|
1565
|
+
* // This will find text0, text1 and text3
|
|
1566
|
+
* ...text().above(..., 'element_edge_area').button()
|
|
1567
|
+
*
|
|
1568
|
+
* // General explanation and display_edge_area
|
|
1569
|
+
* // This will find text0, text1, text2 and text3
|
|
1570
|
+
* ...text().above(..., 'display_edge_area').button()
|
|
1571
|
+
*
|
|
1572
|
+
* // More examples:
|
|
1573
|
+
* // Returns text0 because it is the first element above button
|
|
1262
1574
|
* ...text().above().button()
|
|
1263
1575
|
* ...text().above(0).button()
|
|
1264
|
-
*
|
|
1265
|
-
*
|
|
1266
|
-
* // Returns
|
|
1576
|
+
* ...text().above(0, 'element_edge_area').button()
|
|
1577
|
+
*
|
|
1578
|
+
* // Returns text3 because it is the second text touched by the
|
|
1579
|
+
* // vertical line from the center of button
|
|
1580
|
+
* // Notice: text1 is not touched!
|
|
1581
|
+
* ...text().above(1, 'element_center_line').button()
|
|
1582
|
+
*
|
|
1583
|
+
* // Returns text3 because it is the third text touched by the
|
|
1584
|
+
* // vertical area above the x-axis of button
|
|
1585
|
+
* // Notice: text2 is not touched!
|
|
1586
|
+
* ...text().above(2, 'element_edge_area').button()
|
|
1587
|
+
*
|
|
1588
|
+
* // Returns text2 because it is the third element above button
|
|
1589
|
+
* ...text().above(2, 'display_edge_area').button()
|
|
1590
|
+
*
|
|
1591
|
+
* // Returns no element because button is below the texts
|
|
1267
1592
|
* ...button().above().text()
|
|
1268
1593
|
* ```
|
|
1269
1594
|
* 
|
|
1270
1595
|
*
|
|
1596
|
+
* @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
|
|
1597
|
+
* @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
|
|
1598
|
+
*
|
|
1271
1599
|
* @return {FluentFiltersCondition}
|
|
1272
1600
|
*/
|
|
1273
|
-
above(
|
|
1601
|
+
above(index?: number, intersection_area?: INTERSECTION_AREA): FluentFiltersCondition;
|
|
1274
1602
|
/**
|
|
1275
1603
|
* Filters for an element nearest to another element.
|
|
1276
1604
|
*
|
|
@@ -1374,7 +1702,7 @@ declare class ExecCondition extends Exec {
|
|
|
1374
1702
|
export declare abstract class FluentCommand extends FluentBase {
|
|
1375
1703
|
constructor();
|
|
1376
1704
|
/**
|
|
1377
|
-
* Expects a condition,
|
|
1705
|
+
* Expects a condition, for example, `exists()` or `notExits()`.
|
|
1378
1706
|
*
|
|
1379
1707
|
* Use the structure `expect().<your filter>.(exists()|notExists())` as shown in the examples below.
|
|
1380
1708
|
*
|
|
@@ -1412,7 +1740,7 @@ export declare abstract class FluentCommand extends FluentBase {
|
|
|
1412
1740
|
* await aui.moveMouseTo().text().withText('Grinning_Face').exec()
|
|
1413
1741
|
* ```
|
|
1414
1742
|
*
|
|
1415
|
-
* 
|
|
1416
1744
|
*
|
|
1417
1745
|
*
|
|
1418
1746
|
*
|
|
@@ -1448,7 +1776,7 @@ export declare abstract class FluentCommand extends FluentBase {
|
|
|
1448
1776
|
* await aui.scrollInside(0,-500).text().withText('Bottom sheet').exec();
|
|
1449
1777
|
* ```
|
|
1450
1778
|
*
|
|
1451
|
-
* 
|
|
1452
1780
|
*
|
|
1453
1781
|
* @param {number} x_offset - A (positive/negative) x direction.
|
|
1454
1782
|
* @param {number} y_offset - A (positive/negative) y direction.
|
|
@@ -1520,7 +1848,7 @@ export declare abstract class FluentCommand extends FluentBase {
|
|
|
1520
1848
|
* await aui.moveMouseRelatively(0, 50).exec();
|
|
1521
1849
|
* ```
|
|
1522
1850
|
*
|
|
1523
|
-
* 
|
|
1524
1852
|
*
|
|
1525
1853
|
* @param {number} x_offset - A (positive/negative) x direction.
|
|
1526
1854
|
* @param {number} y_offset - A (positive/negative) y direction.
|
|
@@ -1568,7 +1896,7 @@ export declare abstract class FluentCommand extends FluentBase {
|
|
|
1568
1896
|
*/
|
|
1569
1897
|
scroll(x_offset: number, y_offset: number): Exec;
|
|
1570
1898
|
/**
|
|
1571
|
-
* Executes a shell command on the device your
|
|
1899
|
+
* Executes a shell command on the device your AskUI Controller is connected to.
|
|
1572
1900
|
*
|
|
1573
1901
|
* **Example:**
|
|
1574
1902
|
* ```typescript
|
|
@@ -1651,7 +1979,7 @@ export declare abstract class FluentCommand extends FluentBase {
|
|
|
1651
1979
|
* await aui.mouseDoubleLeftClick().exec();
|
|
1652
1980
|
* ```
|
|
1653
1981
|
*
|
|
1654
|
-
* 
|
|
1655
1983
|
*
|
|
1656
1984
|
* @return {Exec}
|
|
1657
1985
|
*/
|
|
@@ -1793,7 +2121,7 @@ export declare abstract class FluentCommand extends FluentBase {
|
|
|
1793
2121
|
* await aui.pressAndroidTwoKey('volume_down', 'power').exec();
|
|
1794
2122
|
* ```
|
|
1795
2123
|
*
|
|
1796
|
-
* 
|
|
1797
2125
|
*
|
|
1798
2126
|
* @param {ANDROID_KEY} first_key - A Android key
|
|
1799
2127
|
* @param {ANDROID_KEY} second_key - A Android key
|
|
@@ -1916,6 +2244,7 @@ export declare class FluentFiltersGetter extends FluentBase {
|
|
|
1916
2244
|
*/
|
|
1917
2245
|
cell(row_index: number, column_index: number): FluentFiltersOrRelationsGetter;
|
|
1918
2246
|
/**
|
|
2247
|
+
* Filters for a UI element 'table'.
|
|
1919
2248
|
*
|
|
1920
2249
|
* @return {FluentFiltersOrRelationsGetter}
|
|
1921
2250
|
*/
|
|
@@ -1940,6 +2269,8 @@ export declare class FluentFiltersGetter extends FluentBase {
|
|
|
1940
2269
|
* await aui.click().text().withTextRegex('\b[Ss]\w+').exec();
|
|
1941
2270
|
* ```
|
|
1942
2271
|
*
|
|
2272
|
+
* @param {string} [text] - A text to be matched.
|
|
2273
|
+
*
|
|
1943
2274
|
* @return {FluentFiltersOrRelationsGetter}
|
|
1944
2275
|
*/
|
|
1945
2276
|
text(text?: string): FluentFiltersOrRelationsGetter;
|
|
@@ -1961,9 +2292,9 @@ export declare class FluentFiltersGetter extends FluentBase {
|
|
|
1961
2292
|
*/
|
|
1962
2293
|
icon(): FluentFiltersOrRelationsGetter;
|
|
1963
2294
|
/**
|
|
1964
|
-
* Filters for a 'custom element', that is a UI element
|
|
2295
|
+
* Filters for a 'custom element', that is a UI element that is defined by providing an image and other parameters such as degree of rotation. It allows filtering for a UI element based on an image instead of using text or element descriptions like `button().withText('Submit')` in `await aui.click().button().withText('Submit').exec()`.
|
|
1965
2296
|
*
|
|
1966
|
-
* See the tutorial - [Custom Element](https://docs.askui.com/docs/general/
|
|
2297
|
+
* See the tutorial - [Custom Element](https://docs.askui.com/docs/general/Element%20Selection/custom-elements) for more details.
|
|
1967
2298
|
*
|
|
1968
2299
|
* **Example**
|
|
1969
2300
|
* ```typescript
|
|
@@ -1972,7 +2303,7 @@ export declare class FluentFiltersGetter extends FluentBase {
|
|
|
1972
2303
|
* .customElement({
|
|
1973
2304
|
* customImage: './logo.png', // required
|
|
1974
2305
|
* name: 'myLogo', // optional
|
|
1975
|
-
* threshold: 0.
|
|
2306
|
+
* threshold: 0.5, // optional, defaults to 0.5
|
|
1976
2307
|
* stopThreshold: 0.9, // optional, defaults to 0.9
|
|
1977
2308
|
* rotationDegreePerStep: 0, // optional, defaults to 0
|
|
1978
2309
|
* imageCompareFormat: 'grayscale', // optional, defaults to 'grayscale'
|
|
@@ -1988,13 +2319,13 @@ export declare class FluentFiltersGetter extends FluentBase {
|
|
|
1988
2319
|
* - **name** (*`string`, optional*):
|
|
1989
2320
|
* - A unique name that can be used for filtering for the custom element. If not given, any text inside the custom image will be detected via OCR.
|
|
1990
2321
|
* - **threshold** (*`number`, optional*):
|
|
1991
|
-
* - A threshold for how much a UI element needs to be similar to the custom element as defined by the image. Takes values between `0.0` (== all elements are recognized as the custom element which is probably not what you want) and `1.0` (== elements need to look exactly like the `customImage` which is unlikely to be achieved as even minor differences count). Defaults to `0.
|
|
2322
|
+
* - A threshold for how much a UI element needs to be similar to the custom element as defined by the image. Takes values between `0.0` (== all elements are recognized as the custom element which is probably not what you want) and `1.0` (== elements need to look exactly like the `customImage` which is unlikely to be achieved as even minor differences count). Defaults to `0.5`.
|
|
1992
2323
|
* - **stopThreshold** (*`number`, optional*):
|
|
1993
2324
|
* - A threshold for when to stop searching for UI elements similar to the custom element. As soon as UI elements have been found that are at least as similar as the `stopThreshold`, the search is going to stop. After that elements are filtered using the `threshold`. Because of that the `stopThreshold` should be greater than or equal to `threshold`. It is primarily to be used as a speed improvement (by lowering the value). Takes values between `0.0` and `1.0`. Defaults to `0.9`.
|
|
1994
2325
|
* - **rotationDegreePerStep** (*`number`, optional*):
|
|
1995
2326
|
* - Step size in rotation degree. Rotates the custom image by this step size until 360° is exceeded. The range is from `0` to `360`. Defaults to `0`.
|
|
1996
2327
|
* - **imageCompareFormat** (*`'RGB' | 'grayscale' | 'edges'`, optional*):
|
|
1997
|
-
* - The color compare style. 'edges' compares only edges, 'greyscale' compares the brightness of each pixel whereas 'RGB' compares all three colors (red, green, blue). Defaults to 'grayscale'
|
|
2328
|
+
* - The color compare style. `'edges'` compares only edges, `'greyscale'` compares the brightness of each pixel whereas `'RGB'` compares all three colors (red, green, blue). Defaults to `'grayscale'`.
|
|
1998
2329
|
*
|
|
1999
2330
|
*
|
|
2000
2331
|
* @param {CustomElementJson} customElement - The custom element to filter for.
|
|
@@ -2003,7 +2334,13 @@ export declare class FluentFiltersGetter extends FluentBase {
|
|
|
2003
2334
|
*/
|
|
2004
2335
|
customElement(customElement: CustomElementJson): FluentFiltersOrRelationsGetter;
|
|
2005
2336
|
/**
|
|
2006
|
-
* Detects an AI Element created with the workflow
|
|
2337
|
+
* Detects an AI Element created with the [snipping workflow](https://docs.askui.com/docs/general/Components/aielement#snipping-workflow).
|
|
2338
|
+
*
|
|
2339
|
+
* **Examples:**
|
|
2340
|
+
*
|
|
2341
|
+
* ```typescript
|
|
2342
|
+
* await aui.click().aiElement('askui-logo').exec();
|
|
2343
|
+
* ```
|
|
2007
2344
|
*
|
|
2008
2345
|
* @param {string} aiElementName - Name of the AI Element.
|
|
2009
2346
|
*
|
|
@@ -2074,12 +2411,13 @@ export declare class FluentFiltersGetter extends FluentBase {
|
|
|
2074
2411
|
* 'other' === withText('text') => false
|
|
2075
2412
|
*
|
|
2076
2413
|
* // optional parameter: similarity_score
|
|
2077
|
-
* '978-0-201-00650-6' == withText(
|
|
2078
|
-
* '978-0-201-00650-6' == withText(
|
|
2414
|
+
* '978-0-201-00650-6' == withText("978-0-201-00", 90) => false with 82.76 < 90 similarity
|
|
2415
|
+
* '978-0-201-00650-6' == withText("978-0-201-00650", 90) => true with 93.75 > 90 similarity
|
|
2079
2416
|
* ```
|
|
2080
2417
|
* 
|
|
2081
2418
|
*
|
|
2082
2419
|
* @param {string} text - A text to be matched.
|
|
2420
|
+
* @param {number} [similarityScore=70] - Similarity score minimum value, it should be between `0` and `100`.
|
|
2083
2421
|
*
|
|
2084
2422
|
* @return {FluentFiltersOrRelationsGetter}
|
|
2085
2423
|
*/
|
|
@@ -2097,7 +2435,7 @@ export declare class FluentFiltersGetter extends FluentBase {
|
|
|
2097
2435
|
* await aui.get().text().withTextRegex('\b[Ss]\w+').exec()
|
|
2098
2436
|
* ```
|
|
2099
2437
|
*
|
|
2100
|
-
* 
|
|
2101
2439
|
*
|
|
2102
2440
|
*
|
|
2103
2441
|
*
|
|
@@ -2122,7 +2460,7 @@ export declare class FluentFiltersGetter extends FluentBase {
|
|
|
2122
2460
|
* await aui.moveMouseTo().text().withExactText('Password').exec()
|
|
2123
2461
|
* ```
|
|
2124
2462
|
*
|
|
2125
|
-
* 
|
|
2126
2464
|
*
|
|
2127
2465
|
*
|
|
2128
2466
|
*
|
|
@@ -2158,10 +2496,10 @@ export declare class FluentFiltersGetter extends FluentBase {
|
|
|
2158
2496
|
* **Important: _Matching only returns the best matching element when you use it with `get()`_**
|
|
2159
2497
|
*
|
|
2160
2498
|
* A bit of playing around to find a matching description is sometimes needed:
|
|
2161
|
-
*
|
|
2499
|
+
* For example, `puzzle piece` can fail while `an icon showing a puzzle piece` might work.
|
|
2162
2500
|
* Generally, the more detail the better.
|
|
2163
2501
|
*
|
|
2164
|
-
* We also recommend to not restrict the type of element by using the
|
|
2502
|
+
* We also recommend to not restrict the type of element by using the general selector `element()` as shown in the examples below.
|
|
2165
2503
|
*
|
|
2166
2504
|
* **Examples:**
|
|
2167
2505
|
* ```typescript
|
|
@@ -2315,111 +2653,265 @@ export declare class FluentFiltersOrRelationsGetter extends FluentFiltersGetter
|
|
|
2315
2653
|
/**
|
|
2316
2654
|
* Filters for an element right of another element.
|
|
2317
2655
|
*
|
|
2318
|
-
* Takes an optional parameter `index` to select the
|
|
2656
|
+
* Takes an optional parameter `index` to select the nth element (defaults to `0`).
|
|
2657
|
+
*
|
|
2658
|
+
* Takes an optional parameter `intersection_area` to specify which elements right of the other element are filtered for based on their vertical position (y-coordinates of bounding box):
|
|
2659
|
+
* - `"element_center_line"` - considered right of the other element if element's bounding box intersects with a horizontal line passing through the center of the other element
|
|
2660
|
+
* - `"element_edge_area"` - considered right of the other element if element's bounding box intersects with an area between the top and the bottom edge of the other element
|
|
2661
|
+
* - `"display_edge_area"` - considered right of the other element no matter where it is placed vertically on the screen (y-axis)
|
|
2319
2662
|
*
|
|
2320
2663
|
* **Examples:**
|
|
2321
2664
|
* ```typescript
|
|
2322
|
-
*
|
|
2323
|
-
* |
|
|
2324
|
-
*
|
|
2665
|
+
* ---------- --------- ---------
|
|
2666
|
+
* | button | | text0 | | text3 |
|
|
2667
|
+
* ---------- --------- --------- ---------
|
|
2668
|
+
* | text1 | ---------
|
|
2669
|
+
* --------- | text2 |
|
|
2670
|
+
* ---------
|
|
2671
|
+
*
|
|
2672
|
+
* // General explanation for element_center_line
|
|
2673
|
+
* // This will find text0 and text3
|
|
2674
|
+
* ...text().rightOf(..., 'element_center_line').button()
|
|
2675
|
+
*
|
|
2676
|
+
* // General explanation for element_edge_area
|
|
2677
|
+
* // This will find text0, text1 and text3
|
|
2678
|
+
* ...text().rightOf(..., 'element_edge_area').button()
|
|
2679
|
+
*
|
|
2680
|
+
* // General explanation and display_edge_area
|
|
2681
|
+
* // This will find text0, text1, text2 and text3
|
|
2682
|
+
* ...text().rightOf(..., 'display_edge_area').button()
|
|
2325
2683
|
*
|
|
2326
|
-
* //
|
|
2327
|
-
*
|
|
2328
|
-
* ...
|
|
2329
|
-
*
|
|
2330
|
-
* ...
|
|
2331
|
-
*
|
|
2332
|
-
*
|
|
2684
|
+
* // More examples:
|
|
2685
|
+
* // Returns text0 because it is the first element rightOf button
|
|
2686
|
+
* ...text().rightOf().button()
|
|
2687
|
+
* ...text().rightOf(0).button()
|
|
2688
|
+
* ...text().rightOf(0, 'element_edge_area').button()
|
|
2689
|
+
*
|
|
2690
|
+
* // Returns text3 because it is the second text touched by the
|
|
2691
|
+
* // horizontal line from the center of button
|
|
2692
|
+
* // Notice: text1 is not touched!
|
|
2693
|
+
* ...text().rightOf(1, 'element_center_line').button()
|
|
2694
|
+
*
|
|
2695
|
+
* // Returns text3 because it is the third text touched by the
|
|
2696
|
+
* // vertical area rightOf the y-axis of button
|
|
2697
|
+
* // Notice: text2 is not touched!
|
|
2698
|
+
* ...text().rightOf(2, 'element_edge_area').button()
|
|
2699
|
+
*
|
|
2700
|
+
* // Returns text2 because it is the third element rightOf button
|
|
2701
|
+
* ...text().rightOf(2, 'display_edge_area').button()
|
|
2702
|
+
*
|
|
2703
|
+
* // Returns no element because button is rightOf the texts
|
|
2704
|
+
* ...button().rightOf().text()
|
|
2333
2705
|
* ```
|
|
2334
2706
|
* 
|
|
2335
2707
|
*
|
|
2708
|
+
* @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
|
|
2709
|
+
* @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
|
|
2710
|
+
*
|
|
2336
2711
|
* @return {FluentFiltersGetter}
|
|
2337
2712
|
*/
|
|
2338
|
-
rightOf(
|
|
2713
|
+
rightOf(index?: number, intersection_area?: INTERSECTION_AREA): FluentFiltersGetter;
|
|
2339
2714
|
/**
|
|
2340
2715
|
* Filters for an element left of another element.
|
|
2341
2716
|
*
|
|
2342
|
-
* Takes an optional parameter `index` to select the
|
|
2717
|
+
* Takes an optional parameter `index` to select the nth element (defaults to `0`).
|
|
2718
|
+
*
|
|
2719
|
+
* Takes an optional parameter `intersection_area` to specify which elements left of the other element are filtered for based on their vertical position (y-coordinates of bounding box):
|
|
2720
|
+
* - `"element_center_line"` - considered left of the other element if element's bounding box intersects with a horizontal line passing through the center of the other element
|
|
2721
|
+
* - `"element_edge_area"` - considered left of the other element if element's bounding box intersects with an area between the top and the bottom edge of the other element
|
|
2722
|
+
* - `"display_edge_area"` - considered left of the other element no matter where it is placed vertically on the screen (y-axis)
|
|
2343
2723
|
*
|
|
2344
2724
|
* **Examples:**
|
|
2345
2725
|
* ```typescript
|
|
2346
|
-
*
|
|
2347
|
-
* |
|
|
2348
|
-
*
|
|
2726
|
+
* --------- --------- ----------
|
|
2727
|
+
* | text3 | | text0 | | button |
|
|
2728
|
+
* --------- --------- --------- ----------
|
|
2729
|
+
* --------- | text1 |
|
|
2730
|
+
* | text2 | ---------
|
|
2731
|
+
* ---------
|
|
2732
|
+
*
|
|
2733
|
+
* // General explanation for element_center_line
|
|
2734
|
+
* // This will find text0 and text3
|
|
2735
|
+
* ...text().leftOf(..., 'element_center_line').button()
|
|
2736
|
+
*
|
|
2737
|
+
* // General explanation for element_edge_area
|
|
2738
|
+
* // This will find text0, text1 and text3
|
|
2739
|
+
* ...text().leftOf(..., 'element_edge_area').button()
|
|
2740
|
+
*
|
|
2741
|
+
* // General explanation and display_edge_area
|
|
2742
|
+
* // This will find text0, text1, text2 and text3
|
|
2743
|
+
* ...text().leftOf(..., 'display_edge_area').button()
|
|
2744
|
+
*
|
|
2745
|
+
* // More examples:
|
|
2746
|
+
* // Returns text0 because it is the first element leftOf button
|
|
2747
|
+
* ...text().leftOf().button()
|
|
2748
|
+
* ...text().leftOf(0).button()
|
|
2749
|
+
* ...text().leftOf(0, 'element_edge_area').button()
|
|
2750
|
+
*
|
|
2751
|
+
* // Returns text3 because it is the second text touched by the
|
|
2752
|
+
* // horizontal line from the center of button
|
|
2753
|
+
* // Notice: text1 is not touched!
|
|
2754
|
+
* ...text().leftOf(1, 'element_center_line').button()
|
|
2349
2755
|
*
|
|
2350
|
-
* // Returns
|
|
2351
|
-
*
|
|
2352
|
-
*
|
|
2353
|
-
*
|
|
2354
|
-
*
|
|
2355
|
-
* // Returns
|
|
2356
|
-
* ...
|
|
2756
|
+
* // Returns text3 because it is the third text touched by the
|
|
2757
|
+
* // vertical area leftOf the y-axis of button
|
|
2758
|
+
* // Notice: text2 is not touched!
|
|
2759
|
+
* ...text().leftOf(2, 'element_edge_area').button()
|
|
2760
|
+
*
|
|
2761
|
+
* // Returns text2 because it is the third element leftOf button
|
|
2762
|
+
* ...text().leftOf(2, 'display_edge_area').button()
|
|
2763
|
+
*
|
|
2764
|
+
* // Returns no element because button is rightOf the texts
|
|
2765
|
+
* ...button().leftOf().text()
|
|
2357
2766
|
* ```
|
|
2358
2767
|
* 
|
|
2359
2768
|
*
|
|
2769
|
+
* @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
|
|
2770
|
+
* @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
|
|
2771
|
+
*
|
|
2360
2772
|
* @return {FluentFiltersGetter}
|
|
2361
2773
|
*/
|
|
2362
|
-
leftOf(
|
|
2774
|
+
leftOf(index?: number, intersection_area?: INTERSECTION_AREA): FluentFiltersGetter;
|
|
2363
2775
|
/**
|
|
2364
2776
|
* Filters for an element below another element.
|
|
2365
2777
|
*
|
|
2366
|
-
* Takes an optional parameter `index` to select the
|
|
2778
|
+
* Takes an optional parameter `index` to select the nth element (defaults to `0`).
|
|
2779
|
+
*
|
|
2780
|
+
* Takes an optional parameter `intersection_area` to specify which elements below of the other element are filtered for based on their horizontal position (y-coordinates of bounding box):
|
|
2781
|
+
* - `"element_center_line"` - considered below of the other element if element's bounding box intersects with a vertical line passing through the center of the other element
|
|
2782
|
+
* - `"element_edge_area"` - considered below of the other element if element's bounding box intersects with an area between the left and the right edge of the other element
|
|
2783
|
+
* - `"display_edge_area"` - considered below of the other element no matter where it is placed horizontally on the screen (y-axis)
|
|
2367
2784
|
*
|
|
2368
2785
|
* **Examples:**
|
|
2369
2786
|
* ```typescript
|
|
2370
|
-
*
|
|
2371
|
-
* |
|
|
2372
|
-
*
|
|
2373
|
-
*
|
|
2374
|
-
* |
|
|
2375
|
-
*
|
|
2376
|
-
*
|
|
2377
|
-
*
|
|
2378
|
-
*
|
|
2787
|
+
* ------------
|
|
2788
|
+
* | text |
|
|
2789
|
+
* ------------
|
|
2790
|
+
* ------------
|
|
2791
|
+
* | button0 |
|
|
2792
|
+
* ------------
|
|
2793
|
+
* -----------
|
|
2794
|
+
* | button1 |
|
|
2795
|
+
* -----------
|
|
2796
|
+
* -----------
|
|
2797
|
+
* | button2 |
|
|
2798
|
+
* -----------
|
|
2799
|
+
* ------------
|
|
2800
|
+
* | button3 |
|
|
2801
|
+
* ------------
|
|
2379
2802
|
*
|
|
2803
|
+
* // General explanation for element_center_line
|
|
2804
|
+
* // This will find button0 and button3
|
|
2805
|
+
* ...button().below(..., 'element_center_line').text()
|
|
2806
|
+
*
|
|
2807
|
+
* // General explanation for element_edge_area
|
|
2808
|
+
* // This will find button0, button1 and button3
|
|
2809
|
+
* ...button().below(..., 'element_edge_area').text()
|
|
2810
|
+
*
|
|
2811
|
+
* // General explanation and display_edge_area
|
|
2812
|
+
* // This will find button0, button1, button2 and button3
|
|
2813
|
+
* ...button().below(..., 'display_edge_area').text()
|
|
2814
|
+
*
|
|
2815
|
+
* // More examples:
|
|
2380
2816
|
* // Returns button0 because button0 is the first button below text
|
|
2381
2817
|
* ...button().below().text()
|
|
2382
2818
|
* ...button().below(0).text()
|
|
2383
|
-
*
|
|
2384
|
-
*
|
|
2385
|
-
* // Returns
|
|
2819
|
+
* ...button().below(0, 'element_edge_area').text()
|
|
2820
|
+
*
|
|
2821
|
+
* // Returns button3 because it is the second button touched by the
|
|
2822
|
+
* // vertical line from the center of text
|
|
2823
|
+
* // Notice: button1 is not touched
|
|
2824
|
+
* ...button().below(1, 'element_center_line').text()
|
|
2825
|
+
*
|
|
2826
|
+
* // Returns button3 because it is the third button touched by the
|
|
2827
|
+
* // vertical area below the x-axis of text
|
|
2828
|
+
* // Notice: button2 is not touched!
|
|
2829
|
+
* ...button().below(2, 'element_edge_area').text()
|
|
2830
|
+
*
|
|
2831
|
+
* // Returns button2 because it is the third element below text
|
|
2832
|
+
* ...button().below(2, 'display_edge_area').text()
|
|
2833
|
+
*
|
|
2834
|
+
* // Returns no element because text is above the buttons
|
|
2386
2835
|
* ...text().below().button()
|
|
2387
2836
|
* ```
|
|
2388
2837
|
* 
|
|
2389
2838
|
*
|
|
2839
|
+
* @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
|
|
2840
|
+
* @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
|
|
2841
|
+
*
|
|
2390
2842
|
* @return {FluentFiltersGetter}
|
|
2391
2843
|
*/
|
|
2392
|
-
below(
|
|
2844
|
+
below(index?: number, intersection_area?: INTERSECTION_AREA): FluentFiltersGetter;
|
|
2393
2845
|
/**
|
|
2394
2846
|
* Filters for an element above another element.
|
|
2395
2847
|
*
|
|
2396
|
-
* Takes an optional parameter `index` to select the
|
|
2397
|
-
*
|
|
2398
|
-
*
|
|
2399
|
-
*
|
|
2400
|
-
*
|
|
2401
|
-
*
|
|
2402
|
-
*
|
|
2403
|
-
*
|
|
2404
|
-
*
|
|
2405
|
-
*
|
|
2406
|
-
*
|
|
2407
|
-
*
|
|
2408
|
-
*
|
|
2409
|
-
*
|
|
2410
|
-
*
|
|
2848
|
+
* Takes an optional parameter `index` to select the nth element (defaults to `0`).
|
|
2849
|
+
*
|
|
2850
|
+
* Takes an optional parameter `intersection_area` to specify which elements above of the other element are filtered for based on their horizontal position (y-coordinates of bounding box):
|
|
2851
|
+
* - `"element_center_line"` - considered above of the other element if element's bounding box intersects with a vertical line passing through the center of the other element
|
|
2852
|
+
* - `"element_edge_area"` - considered above of the other element if element's bounding box intersects with an area between the left and the right edge of the other element
|
|
2853
|
+
* - `"display_edge_area"` - considered above of the other element no matter where it is placed horizontally on the screen (y-axis)
|
|
2854
|
+
*
|
|
2855
|
+
* **Examples:**
|
|
2856
|
+
* ```typescript
|
|
2857
|
+
* ------------
|
|
2858
|
+
* | text3 |
|
|
2859
|
+
* ------------
|
|
2860
|
+
* ------------
|
|
2861
|
+
* | text2 |
|
|
2862
|
+
* ------------
|
|
2863
|
+
* ------------
|
|
2864
|
+
* | text1 |
|
|
2865
|
+
* ------------
|
|
2866
|
+
* ------------
|
|
2867
|
+
* | text0 |
|
|
2868
|
+
* ------------
|
|
2869
|
+
* ------------
|
|
2870
|
+
* | button |
|
|
2871
|
+
* ------------
|
|
2872
|
+
*
|
|
2873
|
+
* // General explanation for element_center_line
|
|
2874
|
+
* // This will find text0 and text3
|
|
2875
|
+
* ...text().above(..., 'element_center_line').button()
|
|
2876
|
+
*
|
|
2877
|
+
* // General explanation for element_edge_area
|
|
2878
|
+
* // This will find text0, text1 and text3
|
|
2879
|
+
* ...text().above(..., 'element_edge_area').button()
|
|
2880
|
+
*
|
|
2881
|
+
* // General explanation and display_edge_area
|
|
2882
|
+
* // This will find text0, text1, text2 and text3
|
|
2883
|
+
* ...text().above(..., 'display_edge_area').button()
|
|
2884
|
+
*
|
|
2885
|
+
* // More examples:
|
|
2886
|
+
* // Returns text0 because it is the first element above button
|
|
2411
2887
|
* ...text().above().button()
|
|
2412
2888
|
* ...text().above(0).button()
|
|
2413
|
-
*
|
|
2414
|
-
*
|
|
2415
|
-
* // Returns
|
|
2889
|
+
* ...text().above(0, 'element_edge_area').button()
|
|
2890
|
+
*
|
|
2891
|
+
* // Returns text3 because it is the second text touched by the
|
|
2892
|
+
* // vertical line from the center of button
|
|
2893
|
+
* // Notice: text1 is not touched!
|
|
2894
|
+
* ...text().above(1, 'element_center_line').button()
|
|
2895
|
+
*
|
|
2896
|
+
* // Returns text3 because it is the third text touched by the
|
|
2897
|
+
* // vertical area above the x-axis of button
|
|
2898
|
+
* // Notice: text2 is not touched!
|
|
2899
|
+
* ...text().above(2, 'element_edge_area').button()
|
|
2900
|
+
*
|
|
2901
|
+
* // Returns text2 because it is the third element above button
|
|
2902
|
+
* ...text().above(2, 'display_edge_area').button()
|
|
2903
|
+
*
|
|
2904
|
+
* // Returns no element because button is below the texts
|
|
2416
2905
|
* ...button().above().text()
|
|
2417
2906
|
* ```
|
|
2418
2907
|
* 
|
|
2419
2908
|
*
|
|
2909
|
+
* @param {number} [index=0] - Index of element to filter for going into the direction specified. Defaults to `0` which is the first element (zero-indexed) found in that direction.
|
|
2910
|
+
* @param {INTERSECTION_AREA} [intersection_area="element_edge_area"] - Intersecting with either `"element_center_line"`, `"element_edge_area"` or `"display_edge_area"`. Defaults to `"element_edge_area"`.
|
|
2911
|
+
*
|
|
2420
2912
|
* @return {FluentFiltersGetter}
|
|
2421
2913
|
*/
|
|
2422
|
-
above(
|
|
2914
|
+
above(index?: number, intersection_area?: INTERSECTION_AREA): FluentFiltersGetter;
|
|
2423
2915
|
/**
|
|
2424
2916
|
* Filters for an element nearest to another element.
|
|
2425
2917
|
*
|
|
@@ -2507,6 +2999,7 @@ export declare abstract class Getter extends FluentCommand {
|
|
|
2507
2999
|
* ]
|
|
2508
3000
|
* ```
|
|
2509
3001
|
*
|
|
3002
|
+
* ```typescript
|
|
2510
3003
|
* // *************************************************** //
|
|
2511
3004
|
* // Examples on how to work with the returned elements //
|
|
2512
3005
|
* // *************************************************** //
|
|
@@ -2585,6 +3078,7 @@ export declare abstract class Getter extends FluentCommand {
|
|
|
2585
3078
|
* xmax: 1178.8204241071428,
|
|
2586
3079
|
* ymax: 180.83512834821428
|
|
2587
3080
|
* },
|
|
3081
|
+
* },
|
|
2588
3082
|
* DetectedElement {
|
|
2589
3083
|
* name: 'ICON',
|
|
2590
3084
|
* text: 'search',
|
|
@@ -2594,8 +3088,8 @@ export declare abstract class Getter extends FluentCommand {
|
|
|
2594
3088
|
* xmax: 450.6304241071428,
|
|
2595
3089
|
* ymax: 950.47812834821428
|
|
2596
3090
|
* },
|
|
2597
|
-
*
|
|
2598
|
-
*
|
|
3091
|
+
* },
|
|
3092
|
+
* ... 381 more items
|
|
2599
3093
|
* ]
|
|
2600
3094
|
* ```
|
|
2601
3095
|
*
|