rabbit-browser
Version:
Browser automation tool for detecting interactive elements on web pages
76 lines (75 loc) • 2.05 kB
TypeScript
export interface HighlightedElement {
element: Element;
highlight: HTMLElement;
number: HTMLElement;
}
export interface HighlightedTextBlock {
element: Element;
highlight: HTMLElement;
number: HTMLElement;
text: string;
}
export interface ElementData {
id?: string;
tagName: string;
type?: string;
text: string;
attributes?: Record<string, string>;
href?: string;
isVisible: boolean;
isClickable: boolean;
interactable?: boolean;
isFormInput?: boolean;
label?: string;
placeholder?: string;
name?: string;
required?: boolean;
checked?: boolean;
options?: Array<{
value: string;
text: string;
selected: boolean;
}>;
puppet?: {
selector: string;
index: number;
};
}
declare global {
interface Window {
getClickableElements: () => Element[];
highlightedElements: Array<HighlightedElement>;
highlightedTextBlocks: Array<HighlightedTextBlock>;
elementObserver: IntersectionObserver;
textObserver: IntersectionObserver;
updateHighlights: () => void;
highlightClickableElement: (element: Element, index: number) => void;
highlightTextBlock: (element: Element, index: number) => void;
processedElements: Set<Element>;
processedTextBlocks: Set<Element>;
startObservingNewElements: () => void;
_detectorOptions?: {
focusOnConsent?: boolean;
includeFormInputs?: boolean;
highlightAllText?: boolean;
[key: string]: any;
};
}
}
export interface Options {
headless: boolean;
defaultViewport: {
width: number;
height: number;
};
highlightAllText: boolean;
focusOnConsent: boolean;
logDetails: boolean;
waitTime: number;
minElementsRequired: number;
earlyReturn: boolean;
includePageContext: boolean;
includeFormInputs: boolean;
includeTextBlocks: boolean;
preserveBrowserViewport: boolean;
}