Skip to content

常量

本节记录了 Pydoll 中使用的所有常量、枚举和配置值。

pydoll.constants

By

Bases: str, Enum

CSS_SELECTOR class-attribute instance-attribute

CSS_SELECTOR = 'css'

XPATH class-attribute instance-attribute

XPATH = 'xpath'

CLASS_NAME class-attribute instance-attribute

CLASS_NAME = 'class_name'

ID class-attribute instance-attribute

ID = 'id'

TAG_NAME class-attribute instance-attribute

TAG_NAME = 'tag_name'

NAME class-attribute instance-attribute

NAME = 'name'

Scripts

ELEMENT_VISIBLE class-attribute instance-attribute

ELEMENT_VISIBLE = "\n    function() {\n        const rect = this.getBoundingClientRect();\n        return (\n            rect.width > 0 && rect.height > 0\n            && getComputedStyle(this).visibility !== 'hidden'\n            && getComputedStyle(this).display !== 'none'\n        )\n    }\n    "

ELEMENT_ON_TOP class-attribute instance-attribute

ELEMENT_ON_TOP = '\n    function() {\n        const rect = this.getBoundingClientRect();\n        const x = rect.x + rect.width / 2;\n        const y = rect.y + rect.height / 2;\n        const elementFromPoint = document.elementFromPoint(x, y);\n        if (!elementFromPoint) {\n            return false;\n        }\n        return elementFromPoint === this || this.contains(elementFromPoint);\n    }\n    '

ELEMENT_INTERACTIVE class-attribute instance-attribute

ELEMENT_INTERACTIVE = "\n    function() {\n        const style = window.getComputedStyle(this);\n        const rect = this.getBoundingClientRect();\n        if (\n            rect.width <= 0 ||\n            rect.height <= 0 ||\n            style.visibility === 'hidden' ||\n            style.display === 'none' ||\n            style.pointerEvents === 'none'\n        ) {\n            return false;\n        }\n        const x = rect.x + rect.width / 2;\n        const y = rect.y + rect.height / 2;\n        const elementFromPoint = document.elementFromPoint(x, y);\n        if (!elementFromPoint || (elementFromPoint !== this && !this.contains(elementFromPoint))) {\n            return false;\n        }\n        if (this.disabled) {\n            return false;\n        }\n        return true;\n    }\n    "

CLICK class-attribute instance-attribute

CLICK = "\n    function(){\n        clicked = false;\n        this.addEventListener('click', function(){\n            clicked = true;\n        });\n        this.click();\n        return clicked;\n    }\n    "

CLICK_OPTION_TAG class-attribute instance-attribute

CLICK_OPTION_TAG = "\n    function() {\n    this.selected = true;\n    var select = this.parentElement.closest('select');\n    var event = new Event('change', { bubbles: true });\n    select.dispatchEvent(event);\n    }\n    "

BOUNDS class-attribute instance-attribute

BOUNDS = '\n    function() {\n        return JSON.stringify(this.getBoundingClientRect());\n    }\n    '

FIND_RELATIVE_XPATH_ELEMENT class-attribute instance-attribute

FIND_RELATIVE_XPATH_ELEMENT = '\n        function() {\n            return document.evaluate(\n                "{escaped_value}", this, null,\n                XPathResult.FIRST_ORDERED_NODE_TYPE, null\n            ).singleNodeValue;\n        }\n    '

FIND_XPATH_ELEMENT class-attribute instance-attribute

FIND_XPATH_ELEMENT = '\n        var element = document.evaluate(\n            "{escaped_value}", document, null,\n            XPathResult.FIRST_ORDERED_NODE_TYPE, null\n        ).singleNodeValue;\n        element;\n    '

FIND_RELATIVE_XPATH_ELEMENTS class-attribute instance-attribute

FIND_RELATIVE_XPATH_ELEMENTS = '\n        function() {\n            var elements = document.evaluate(\n                "{escaped_value}", this, null,\n                XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null\n            );\n            var results = [];\n            for (var i = 0; i < elements.snapshotLength; i++) {\n                results.push(elements.snapshotItem(i));\n            }\n            return results;\n        }\n    '

FIND_XPATH_ELEMENTS class-attribute instance-attribute

FIND_XPATH_ELEMENTS = '\n        var elements = document.evaluate(\n            "{escaped_value}", document, null,\n            XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null\n        );\n        var results = [];\n        for (var i = 0; i < elements.snapshotLength; i++) {\n            results.push(elements.snapshotItem(i));\n        }\n        results;\n    '

QUERY_SELECTOR class-attribute instance-attribute

QUERY_SELECTOR = 'document.querySelector("{selector}");'

RELATIVE_QUERY_SELECTOR class-attribute instance-attribute

RELATIVE_QUERY_SELECTOR = '\n        function() {\n            return this.querySelector("{selector}");\n        }\n    '

QUERY_SELECTOR_ALL class-attribute instance-attribute

QUERY_SELECTOR_ALL = 'document.querySelectorAll("{selector}");'

RELATIVE_QUERY_SELECTOR_ALL class-attribute instance-attribute

RELATIVE_QUERY_SELECTOR_ALL = '\n        function() {\n            return this.querySelectorAll("{selector}");\n        }\n    '

GET_PARENT_NODE class-attribute instance-attribute

GET_PARENT_NODE = '\n        function() {\n            return this.parentElement;\n        }\n    '

MAKE_REQUEST class-attribute instance-attribute

MAKE_REQUEST = '\n(async function() {{\n    async function makeRequest(url, options) {{\n        try {{\n            const response = await fetch(url, options, {{\n                credentials: \'include\',\n            }});\n            const headers = {{}};\n            response.headers.forEach((value, key) => {{\n                headers[key] = value;\n            }});\n\n            // Extract cookies from set-cookie header\n            const cookies = document.cookie;\n            let text = await response.text();\n            const possiblePrefixes = [")]}}\'\\n", ")]}}\'\\n", ")]}}\\n"];\n            for (let prefix of possiblePrefixes) {{\n                if (text.startsWith(prefix)) {{\n                    text = text.substring(prefix.length);\n                    break;\n                }}\n            }}\n            let content, jsonData;\n            const contentType = response.headers.get(\'content-type\') || \'\';\n\n            if (contentType.includes(\'application/json\')) {{\n                try {{\n                    jsonData = JSON.parse(text);\n                    text = JSON.stringify(jsonData);\n                }} catch (e) {{\n                    jsonData = null;\n                    // Keep original text if parsing fails\n                }}\n                content = new TextEncoder().encode(text).buffer;\n            }} else {{\n                // For non-JSON, keep original text handling\n                content = new TextEncoder().encode(text).buffer;\n                jsonData = null;\n            }}\n\n            return {{\n                status: response.status,\n                ok: response.ok,\n                url: response.url,\n                headers: headers,\n                cookies: cookies,\n                content: Array.from(new Uint8Array(content)),\n                text: text,\n                json: jsonData\n            }};\n        }} catch (error) {{\n            return {{\n                error: error.toString(),\n                status: 0\n            }};\n        }}\n    }}\n\n    const url = {url};\n    const options = {options};\n    return await makeRequest(url, options);\n}})();\n'

Key

Bases: tuple[str, int], Enum

BACKSPACE class-attribute instance-attribute

BACKSPACE = ('Backspace', 8)

TAB class-attribute instance-attribute

TAB = ('Tab', 9)

ENTER class-attribute instance-attribute

ENTER = ('Enter', 13)

SHIFT class-attribute instance-attribute

SHIFT = ('Shift', 16)

CONTROL class-attribute instance-attribute

CONTROL = ('Control', 17)

ALT class-attribute instance-attribute

ALT = ('Alt', 18)

PAUSE class-attribute instance-attribute

PAUSE = ('Pause', 19)

CAPSLOCK class-attribute instance-attribute

CAPSLOCK = ('CapsLock', 20)

ESCAPE class-attribute instance-attribute

ESCAPE = ('Escape', 27)

SPACE class-attribute instance-attribute

SPACE = ('Space', 32)

PAGEUP class-attribute instance-attribute

PAGEUP = ('PageUp', 33)

PAGEDOWN class-attribute instance-attribute

PAGEDOWN = ('PageDown', 34)

END class-attribute instance-attribute

END = ('End', 35)

HOME class-attribute instance-attribute

HOME = ('Home', 36)

ARROWLEFT class-attribute instance-attribute

ARROWLEFT = ('ArrowLeft', 37)

ARROWUP class-attribute instance-attribute

ARROWUP = ('ArrowUp', 38)

ARROWRIGHT class-attribute instance-attribute

ARROWRIGHT = ('ArrowRight', 39)

ARROWDOWN class-attribute instance-attribute

ARROWDOWN = ('ArrowDown', 40)

PRINTSCREEN class-attribute instance-attribute

PRINTSCREEN = ('PrintScreen', 44)

INSERT class-attribute instance-attribute

INSERT = ('Insert', 45)

DELETE class-attribute instance-attribute

DELETE = ('Delete', 46)

META class-attribute instance-attribute

META = ('Meta', 91)

METARIGHT class-attribute instance-attribute

METARIGHT = ('MetaRight', 92)

CONTEXTMENU class-attribute instance-attribute

CONTEXTMENU = ('ContextMenu', 93)

NUMLOCK class-attribute instance-attribute

NUMLOCK = ('NumLock', 144)

SCROLLLOCK class-attribute instance-attribute

SCROLLLOCK = ('ScrollLock', 145)

F1 class-attribute instance-attribute

F1 = ('F1', 112)

F2 class-attribute instance-attribute

F2 = ('F2', 113)

F3 class-attribute instance-attribute

F3 = ('F3', 114)

F4 class-attribute instance-attribute

F4 = ('F4', 115)

F5 class-attribute instance-attribute

F5 = ('F5', 116)

F6 class-attribute instance-attribute

F6 = ('F6', 117)

F7 class-attribute instance-attribute

F7 = ('F7', 118)

F8 class-attribute instance-attribute

F8 = ('F8', 119)

F9 class-attribute instance-attribute

F9 = ('F9', 120)

F10 class-attribute instance-attribute

F10 = ('F10', 121)

F11 class-attribute instance-attribute

F11 = ('F11', 122)

F12 class-attribute instance-attribute

F12 = ('F12', 123)

SEMICOLON class-attribute instance-attribute

SEMICOLON = ('Semicolon', 186)

EQUALSIGN class-attribute instance-attribute

EQUALSIGN = ('EqualSign', 187)

COMMA class-attribute instance-attribute

COMMA = ('Comma', 188)

MINUS class-attribute instance-attribute

MINUS = ('Minus', 189)

PERIOD class-attribute instance-attribute

PERIOD = ('Period', 190)

SLASH class-attribute instance-attribute

SLASH = ('Slash', 191)

GRAVEACCENT class-attribute instance-attribute

GRAVEACCENT = ('GraveAccent', 192)

BRACKETLEFT class-attribute instance-attribute

BRACKETLEFT = ('BracketLeft', 219)

BACKSLASH class-attribute instance-attribute

BACKSLASH = ('Backslash', 220)

BRACKETRIGHT class-attribute instance-attribute

BRACKETRIGHT = ('BracketRight', 221)

QUOTE class-attribute instance-attribute

QUOTE = ('Quote', 222)

BrowserType

Bases: Enum

CHROME class-attribute instance-attribute

CHROME = auto()

EDGE class-attribute instance-attribute

EDGE = auto()