跳至主要内容

ElementHandle

ElementHandle 表示页面内的DOM元素。可以通过 page.query_selector() 方法创建 ElementHandle。

Discouraged

不建议使用ElementHandle,请改用Locator对象和面向网页的断言。

href_element = page.query_selector("a")
href_element.click()

ElementHandle 可以防止 DOM 元素被垃圾回收,除非通过 js_handle.dispose() 方法释放该句柄。当元素所在的框架发生导航时,ElementHandles 会自动被释放。

ElementHandle实例可以用作page.eval_on_selector()page.evaluate()方法中的参数。

Locator和ElementHandle之间的区别在于,ElementHandle指向特定元素,而Locator捕获的是如何检索元素的逻辑。

在下面的示例中,handle指向页面上的特定DOM元素。如果该元素更改了文本或被React用来渲染完全不同的组件,handle仍然指向该DOM元素。这可能导致意外行为。

handle = page.query_selector("text=Submit")
handle.hover()
handle.click()

使用定位器时,每次使用element时,都会使用选择器在页面中定位最新的DOM元素。因此在下面的代码片段中,底层DOM元素将被定位两次。

locator = page.get_by_text("Submit")
locator.hover()
locator.click()

方法

边界框

Added before v1.9 elementHandle.bounding_box

该方法返回元素的边界框,如果元素不可见则返回null。边界框是相对于主框架视口计算的 - 通常与浏览器窗口相同。

滚动会影响返回的边界框,类似于Element.getBoundingClientRect。这意味着x和/或y可能为负值。

来自子框架的元素返回相对于主框架的边界框,这与Element.getBoundingClientRect不同。

假设页面是静态的,使用边界框坐标来执行输入操作是安全的。例如,以下代码片段应该会点击元素的中心位置。

用法

box = element_handle.bounding_box()
page.mouse.click(box["x"] + box["width"] / 2, box["y"] + box["height"] / 2)

返回

  • NoneType | 字典#
    • x float

      元素的x坐标,单位为像素。

    • y float

      元素的y坐标,单位为像素。

    • width float

      元素的宽度,单位为像素。

    • height float

      元素的高度,单位为像素。


content_frame

Added before v1.9 elementHandle.content_frame

返回引用iframe节点的元素句柄的内容框架,否则返回null

用法

element_handle.content_frame()

返回


owner_frame

Added before v1.9 elementHandle.owner_frame

返回包含给定元素的框架。

用法

element_handle.owner_frame()

返回


等待元素状态

Added before v1.9 elementHandle.wait_for_element_state

当元素满足state状态时返回。

根据state参数的不同,该方法会等待其中一个actionability检查通过。如果在等待期间元素被分离,该方法会抛出异常,除非等待的是"hidden"状态。

  • "visible" 等待元素变为可见状态。
  • "hidden" 等待直到元素不可见或未附加。请注意,等待元素隐藏时,如果元素分离不会抛出错误。
  • "stable" 等待直到元素既可见稳定
  • "enabled" 等待直到元素变为enabled状态。
  • "disabled" 等待直到元素不可用
  • "editable" 等待元素变为可编辑状态。

如果元素在timeout毫秒内不满足条件,该方法将抛出异常。

用法

element_handle.wait_for_element_state(state)
element_handle.wait_for_element_state(state, **kwargs)

参数

  • state "visible" | "hidden" | "stable" | "enabled" | "disabled" | "editable"#

    要等待的状态,更多详情请参阅下文。

  • timeout float (可选)#

    最大时间,单位为毫秒。默认为 30000 (30秒)。传入 0 表示禁用超时。默认值可以通过使用 browser_context.set_default_timeout()page.set_default_timeout() 方法进行修改。

返回


已弃用

检查

Added before v1.9 elementHandle.check
Discouraged

请改用基于定位器的locator.check()。了解更多关于locators的信息。

该方法通过执行以下步骤来检查元素:

  1. 确保该元素是一个复选框或单选输入框。如果不是,此方法将抛出异常。如果元素已被选中,此方法立即返回。
  2. 等待元素上的可操作性检查,除非设置了force选项。
  3. 如果需要,将元素滚动到视图中。
  4. 使用 page.mouse 点击元素的中心位置。
  5. 确保元素现在已被勾选。如果没有,此方法将抛出异常。

如果在操作过程中的任何时刻元素从DOM中分离,该方法会抛出异常。

当所有步骤在指定的timeout时间内未完成时,该方法会抛出TimeoutError。传递零超时将禁用此功能。

用法

element_handle.check()
element_handle.check(**kwargs)

参数

  • force bool (可选)#

    是否绕过actionability检查。默认为false

  • no_wait_after bool (可选)#

    已弃用

    此选项无效。

    此选项无效。

  • position Dict (可选) 添加于: v1.11#

    一个相对于元素内边距框左上角使用的点。如果未指定,则使用元素的某个可见点。

  • timeout float (可选)#

    最大时间,单位为毫秒。默认为 30000 (30秒)。传入 0 表示禁用超时。默认值可以通过使用 browser_context.set_default_timeout()page.set_default_timeout() 方法进行修改。

  • trial bool (可选) 添加于: v1.11#

    当设置时,此方法仅执行可操作性检查并跳过实际操作。默认为false。适用于等待元素准备好执行操作而无需实际执行的情况。

返回


点击

Added before v1.9 elementHandle.click
Discouraged

请使用基于定位器的locator.click()替代。了解更多关于locators的信息。

该方法通过执行以下步骤来点击元素:

  1. 等待元素上的可操作性检查,除非设置了force选项。
  2. 如果需要,将元素滚动到视图中。
  3. 使用 page.mouse 点击元素的中心位置,或指定的 position
  4. 等待已启动的导航成功或失败,除非设置了no_wait_after选项。

如果在操作过程中元素从DOM中分离,该方法会抛出异常。

当所有步骤在指定的timeout时间内未完成时,该方法会抛出TimeoutError。传递零超时将禁用此功能。

用法

element_handle.click()
element_handle.click(**kwargs)

参数

  • button "left" | "right" | "middle" (可选)#

    默认为 left

  • click_count int (可选)#

    默认为1。参见 UIEvent.detail

  • delay float (可选)#

    mousedownmouseup之间等待的时间,以毫秒为单位。默认为0。

  • force bool (可选)#

    是否绕过actionability检查。默认为false

  • modifiers List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (可选)#

    需要按下的修饰键。确保在操作期间只按下这些修饰键,然后恢复当前按下的修饰键。如果未指定,则使用当前按下的修饰键。"ControlOrMeta"在Windows和Linux上解析为"Control",在macOS上解析为"Meta"。

  • no_wait_after bool (可选)#

    已弃用

    此选项在未来将默认设置为true

    触发页面导航的操作会等待这些导航完成以及页面开始加载。您可以通过设置此标志来选择不等待。仅在特殊情况下(如导航到不可访问的页面)才需要此选项。默认为false

  • position Dict (可选)#

    一个相对于元素内边距框左上角使用的点。如果未指定,则使用元素的某个可见点。

  • timeout float (可选)#

    最大时间,单位为毫秒。默认为 30000 (30秒)。传入 0 表示禁用超时。默认值可以通过使用 browser_context.set_default_timeout()page.set_default_timeout() 方法进行修改。

  • trial bool (可选) 添加于: v1.11#

    当设置时,此方法仅执行可操作性检查并跳过实际操作。默认为false。适用于等待元素准备好执行操作而无需实际执行的情况。

返回


双击

Added before v1.9 elementHandle.dblclick
Discouraged

请改用基于定位器的locator.dblclick()。了解更多关于locators的信息。

该方法通过执行以下步骤双击元素:

  1. 等待元素上的可操作性检查,除非设置了force选项。
  2. 如果需要,将元素滚动到视图中。
  3. 使用 page.mouse 双击元素的中心位置,或指定的 position

如果在操作过程中的任何时刻元素从DOM中分离,该方法会抛出异常。

当所有步骤在指定的timeout时间内未完成时,该方法会抛出TimeoutError。传递零超时将禁用此功能。

note

elementHandle.dblclick() 会触发两次 click 事件和一次 dblclick 事件。

用法

element_handle.dblclick()
element_handle.dblclick(**kwargs)

参数

  • button "left" | "right" | "middle" (可选)#

    默认为 left

  • delay float (可选)#

    mousedownmouseup之间等待的时间,以毫秒为单位。默认为0。

  • force bool (可选)#

    是否绕过actionability检查。默认为false

  • modifiers List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (可选)#

    需要按下的修饰键。确保在操作期间只按下这些修饰键,然后恢复当前按下的修饰键。如果未指定,则使用当前按下的修饰键。"ControlOrMeta"在Windows和Linux上解析为"Control",在macOS上解析为"Meta"。

  • no_wait_after bool (可选)#

    已弃用

    此选项无效。

    此选项无效。

  • position Dict (可选)#

    一个相对于元素内边距框左上角使用的点。如果未指定,则使用元素的某个可见点。

  • timeout float (可选)#

    最大时间,单位为毫秒。默认为 30000 (30秒)。传入 0 表示禁用超时。默认值可以通过使用 browser_context.set_default_timeout()page.set_default_timeout() 方法进行修改。

  • trial bool (可选) 添加于: v1.11#

    当设置时,此方法仅执行可操作性检查并跳过实际操作。默认为false。适用于等待元素准备好执行操作而无需实际执行的情况。

返回


dispatch_event

Added before v1.9 elementHandle.dispatch_event
Discouraged

请改用基于定位器的locator.dispatch_event()。了解更多关于locators的信息。

下面的代码片段会在元素上触发click事件。无论元素的可见状态如何,都会触发click事件。这相当于调用element.click()

用法

element_handle.dispatch_event("click")

在底层实现中,它会根据给定的type创建一个事件实例,使用event_init属性进行初始化,并在元素上派发该事件。默认情况下,事件是composedcancelable且支持冒泡的。

由于 event_init 是事件特定的,请参考事件文档以获取初始属性列表:

如果希望将实时对象传递到事件中,您也可以将JSHandle指定为属性值:

# note you can only create data_transfer in chromium and firefox
data_transfer = page.evaluate_handle("new DataTransfer()")
element_handle.dispatch_event("#source", "dragstart", {"dataTransfer": data_transfer})

参数

  • type str#

    DOM事件类型:"click""dragstart"等。

  • event_init EvaluationArgument (可选)#

    可选的事件特定初始化属性。

返回


eval_on_selector

Added in: v1.9 elementHandle.eval_on_selector
Discouraged

此方法不会等待元素通过可操作性检查,因此可能导致测试不稳定。请改用locator.evaluate()、其他Locator辅助方法或基于网页的断言。

返回expression的返回值。

该方法在ElementHandle子树中查找与指定选择器匹配的元素,并将其作为第一个参数传递给expression。如果没有元素匹配选择器,该方法会抛出错误。

如果expression返回一个Promise,那么element_handle.eval_on_selector()将等待promise解析完成并返回其值。

用法

tweet_handle = page.query_selector(".tweet")
assert tweet_handle.eval_on_selector(".like", "node => node.innerText") == "100"
assert tweet_handle.eval_on_selector(".retweets", "node => node.innerText") == "10"

参数

  • selector str#

    用于查询的选择器。

  • expression str#

    要在浏览器上下文中评估的JavaScript表达式。如果表达式评估为一个函数,该函数将自动调用。

  • arg EvaluationArgument (可选)#

    可选的参数传递给 expression

返回


eval_on_selector_all

Added in: v1.9 elementHandle.eval_on_selector_all
Discouraged

在大多数情况下,locator.evaluate_all()、其他Locator辅助方法和web优先断言能更好地完成工作。

返回expression的返回值。

该方法在ElementHandle的子节点树中查找所有匹配指定选择器的元素,并将匹配元素的数组作为第一个参数传递给expression

如果expression返回一个Promise,那么element_handle.eval_on_selector_all()将等待该promise解析完成并返回其值。

用法

<div class="feed">
<div class="tweet">Hello!</div>
<div class="tweet">Hi!</div>
</div>
feed_handle = page.query_selector(".feed")
assert feed_handle.eval_on_selector_all(".tweet", "nodes => nodes.map(n => n.innerText)") == ["hello!", "hi!"]

参数

  • selector str#

    用于查询的选择器。

  • expression str#

    要在浏览器上下文中评估的JavaScript表达式。如果表达式评估为一个函数,该函数将自动调用。

  • arg EvaluationArgument (可选)#

    可选的参数传递给 expression

返回


fill

Added before v1.9 elementHandle.fill
Discouraged

请改用基于定位器的locator.fill()方法。了解更多关于locators的信息。

该方法会等待可操作性检查,聚焦元素,填充内容并在填充后触发input事件。请注意,您可以传递空字符串来清空输入框。

如果目标元素不是<input><textarea>[contenteditable]元素,此方法将抛出错误。但如果该元素位于具有关联control<label>元素内,则会填充对应的控件。

要发送精细的键盘事件,请使用 locator.press_sequentially()

用法

element_handle.fill(value)
element_handle.fill(value, **kwargs)

参数

返回


focus

Added before v1.9 elementHandle.focus
Discouraged

请改用基于定位器的locator.focus()方法。了解更多关于locators的信息。

在元素上调用focus

用法

element_handle.focus()

返回


get_attribute

Added before v1.9 elementHandle.get_attribute
Discouraged

请使用基于定位器的 locator.get_attribute() 替代。了解更多关于 locators 的信息。

返回元素的属性值。

用法

element_handle.get_attribute(name)

参数

  • name str#

    要获取值的属性名称。

返回


悬停

Added before v1.9 elementHandle.hover
Discouraged

请改用基于定位器的locator.hover()。了解更多关于locators的信息。

该方法通过执行以下步骤来悬停在元素上:

  1. 等待元素上的可操作性检查,除非设置了force选项。
  2. 如果需要,将元素滚动到视图中。
  3. 使用 page.mouse 悬停在元素的中心位置,或指定的 position

如果在操作过程中元素从DOM中分离,该方法会抛出异常。

当所有步骤在指定的timeout时间内未完成时,该方法会抛出TimeoutError。传递零超时将禁用此功能。

用法

element_handle.hover()
element_handle.hover(**kwargs)

参数

  • force bool (可选)#

    是否绕过actionability检查。默认为false

  • modifiers List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (可选)#

    需要按下的修饰键。确保在操作期间只按下这些修饰键,然后恢复当前按下的修饰键。如果未指定,则使用当前按下的修饰键。"ControlOrMeta"在Windows和Linux上解析为"Control",在macOS上解析为"Meta"。

  • no_wait_after bool (可选) 添加于: v1.28#

    已弃用

    此选项无效。

    此选项无效。

  • position Dict (可选)#

    一个相对于元素内边距框左上角使用的点。如果未指定,则使用元素的某个可见点。

  • timeout float (可选)#

    最大时间,单位为毫秒。默认为 30000 (30秒)。传入 0 表示禁用超时。默认值可以通过使用 browser_context.set_default_timeout()page.set_default_timeout() 方法进行修改。

  • trial bool (可选) 添加于: v1.11#

    当设置时,此方法仅执行可操作性检查并跳过实际操作。默认为false。适用于等待元素准备好执行操作而无需实际执行的情况。

返回


inner_html

Added before v1.9 elementHandle.inner_html
Discouraged

Use locator-based locator.inner_html() instead. Read more about locators.

Returns the element.innerHTML.

用法

element_handle.inner_html()

返回


inner_text

Added before v1.9 elementHandle.inner_text
Discouraged

请使用基于定位器的locator.inner_text()替代。了解更多关于locators的信息。

返回 element.innerText

用法

element_handle.inner_text()

返回


输入值

Added in: v1.13 elementHandle.input_value
Discouraged

请改用基于定位器的locator.input_value()方法。了解更多关于locators的信息。

返回所选<input><textarea><select>元素的input.value

对于非输入元素会抛出错误。但是,如果该元素位于具有关联control<label>元素内,则返回该控件的值。

用法

element_handle.input_value()
element_handle.input_value(**kwargs)

参数

返回


is_checked

Added before v1.9 elementHandle.is_checked
Discouraged

请改用基于定位器的 locator.is_checked()。了解更多关于 locators 的信息。

返回元素是否被选中。如果元素不是复选框或单选输入,则会抛出错误。

用法

element_handle.is_checked()

返回


is_disabled

Added before v1.9 elementHandle.is_disabled
Discouraged

请使用基于定位器的 locator.is_disabled() 替代。了解更多关于 locators 的信息。

返回元素是否被禁用,与enabled相反。

用法

element_handle.is_disabled()

返回


is_editable

Added before v1.9 elementHandle.is_editable
Discouraged

请改用基于定位器的locator.is_editable()。了解更多关于locators的信息。

返回该元素是否可编辑

用法

element_handle.is_editable()

返回


is_enabled

Added before v1.9 elementHandle.is_enabled
Discouraged

请改用基于定位器的locator.is_enabled()。了解更多关于locators的信息。

返回元素是否启用

用法

element_handle.is_enabled()

返回


is_hidden

Added before v1.9 elementHandle.is_hidden
Discouraged

请改用基于定位器的 locator.is_hidden()。了解更多关于 locators 的信息。

返回元素是否隐藏,与visible相反。

用法

element_handle.is_hidden()

返回


is_visible

Added before v1.9 elementHandle.is_visible
Discouraged

请使用基于定位器的 locator.is_visible() 替代。了解更多关于 locators 的信息。

返回元素是否可见

用法

element_handle.is_visible()

返回


按下

Added before v1.9 elementHandle.press
Discouraged

请改用基于定位器的locator.press()。了解更多关于locators的信息。

聚焦元素,然后使用 keyboard.down()keyboard.up()

key 可以指定预期的 keyboardEvent.key 值或单个字符来生成文本。可以在这里找到key值的超集。按键示例如下:

F1 - F12, Digit0- Digit9, KeyA- KeyZ, Backquote, Minus, Equal, Backslash, Backspace, Tab, Delete, Escape, ArrowDown, End, Enter, Home, Insert, PageDown, PageUp, ArrowRight, ArrowUp, 等。

还支持以下修改快捷键:ShiftControlAltMetaShiftLeftControlOrMeta

按住 Shift 键将输入对应 key 的大写文本。

如果 key 是单个字符,则区分大小写,因此值 aA 将生成不同的相应文本。

诸如key: "Control+o"key: "Control++key: "Control+Shift+T"之类的快捷键也同样支持。当指定修饰键时,修饰键会被按下并保持按住状态,同时后续的键被按下。

用法

element_handle.press(key)
element_handle.press(key, **kwargs)

参数

  • key str#

    要按下的键的名称或要生成的字符,例如 ArrowLefta

  • delay float (可选)#

    keydownkeyup之间等待的时间,单位为毫秒。默认为0。

  • no_wait_after bool (可选)#

    已弃用

    此选项在未来将默认设置为true

    触发页面导航的操作会等待这些导航完成以及页面开始加载。您可以通过设置此标志来选择不等待。仅在特殊情况下(如导航到不可访问的页面)才需要此选项。默认为false

  • timeout float (可选)#

    最大时间,单位为毫秒。默认为 30000 (30秒)。传入 0 表示禁用超时。默认值可以通过使用 browser_context.set_default_timeout()page.set_default_timeout() 方法进行修改。

返回


query_selector

Added in: v1.9 elementHandle.query_selector
Discouraged

请改用基于定位器的page.locator()。了解更多关于locators的信息。

该方法在ElementHandle的子节点树中查找与指定选择器匹配的元素。如果没有元素匹配该选择器,则返回null

用法

element_handle.query_selector(selector)

参数

  • selector str#

    用于查询的选择器。

返回


query_selector_all

Added in: v1.9 elementHandle.query_selector_all
Discouraged

请改用基于定位器的page.locator()。了解更多关于locators的信息。

该方法在ElementHandle子树中查找所有匹配指定选择器的元素。如果没有元素匹配选择器,则返回空数组。

用法

element_handle.query_selector_all(selector)

参数

  • selector str#

    用于查询的选择器。

返回


截图

Added before v1.9 elementHandle.screenshot
Discouraged

请改用基于定位器的 locator.screenshot() 方法。了解更多关于 locators 的信息。

该方法会截取页面的屏幕截图,裁剪为此特定元素的大小和位置。如果该元素被其他元素覆盖,则在屏幕截图中实际上不可见。如果该元素是可滚动容器,则屏幕截图中仅显示当前滚动的内容。

该方法在截取屏幕截图前会等待可操作性检查,然后将元素滚动到视图中。如果元素已从DOM中分离,该方法将抛出错误。

返回包含捕获屏幕截图的缓冲区。

用法

element_handle.screenshot()
element_handle.screenshot(**kwargs)

参数

  • animations "disabled" | "allow" (可选)#

    当设置为"disabled"时,会停止CSS动画、CSS过渡和Web动画。动画会根据其持续时间受到不同的处理:

    • 有限动画会被快进到完成状态,因此会触发transitionend事件。
    • 无限循环动画会被取消回到初始状态,截图完成后会重新播放。

    默认为"allow",表示保持动画原样不做处理。

  • caret "hide" | "initial" (可选)#

    当设置为"hide"时,截图将隐藏文本光标。当设置为"initial"时,文本光标行为将保持不变。默认为"hide"

  • mask List[Locator] (可选)#

    指定在截图时应被遮罩的定位器。被遮罩的元素将被一个粉红色盒子#FF00FF(可通过mask_color自定义)完全覆盖其边界框。该遮罩也会应用于不可见元素,如需禁用此功能请参阅Matching only visible elements

  • mask_color str (可选) 添加于: v1.35#

    指定被遮罩元素的覆盖框颜色,使用CSS颜色格式。默认颜色为粉色#FF00FF

  • omit_background bool (可选参数)#

    隐藏默认的白色背景,允许捕获带透明度的截图。不适用于jpeg格式的图片。默认为false

  • path Union[str, pathlib.Path] (可选)#

    保存图片的文件路径。截图类型将从文件扩展名推断。如果path是相对路径,则相对于当前工作目录解析。如果未提供路径,图片将不会保存到磁盘。

  • quality int (可选)#

    图像质量,介于0-100之间。不适用于png图像。

  • scale "css" | "device" (可选)#

    当设置为"css"时,截图将对应页面上的每个CSS像素生成一个像素。对于高DPI设备,这将保持截图较小。使用"device"选项将为每个设备像素生成一个像素,因此高DPI设备的截图会是两倍甚至更大。

    默认为"device"

  • style str (可选) 添加于: v1.41#

    在截图时应用的样式表文本。在这里您可以隐藏动态元素、使元素不可见或更改其属性,以帮助创建可重复的截图。此样式表穿透Shadow DOM并应用于内部框架。

  • timeout float (可选)#

    最大时间,单位为毫秒。默认为 30000 (30秒)。传入 0 表示禁用超时。默认值可以通过使用 browser_context.set_default_timeout()page.set_default_timeout() 方法进行修改。

  • type "png" | "jpeg" (可选)#

    指定截图类型,默认为png

返回


scroll_into_view_if_needed

Added before v1.9 elementHandle.scroll_into_view_if_needed
Discouraged

请使用基于定位器的 locator.scroll_into_view_if_needed() 替代。了解更多关于 locators 的信息。

该方法等待可操作性检查,然后尝试将元素滚动到视图中,除非它完全可见,如IntersectionObserverratio所定义。

elementHandle未指向连接到Document或ShadowRoot的元素时抛出错误。

查看scrolling获取其他滚动方式。

用法

element_handle.scroll_into_view_if_needed()
element_handle.scroll_into_view_if_needed(**kwargs)

参数

返回


select_option

Added before v1.9 elementHandle.select_option
Discouraged

请使用基于定位器的locator.select_option()替代。了解更多关于locators的信息。

该方法会等待可操作性检查,直到所有指定选项出现在元素中并选择这些选项。

如果目标元素不是<select>元素,此方法将抛出错误。但是,如果该元素位于具有关联control<label>元素内,则将改用该控件。

返回已成功选择的选项值数组。

在选择完所有提供的选项后,触发changeinput事件。

用法

# Single selection matching the value or label
handle.select_option("blue")
# single selection matching both the label
handle.select_option(label="blue")
# multiple selection
handle.select_option(value=["red", "green", "blue"])

参数

  • force bool (可选) 添加于: v1.13#

    是否绕过可操作性检查。默认为false

  • no_wait_after bool (可选)#

    已弃用

    此选项无效。

    此选项无效。

  • timeout float (可选)#

    最大时间,单位为毫秒。默认为 30000 (30秒)。传入 0 表示禁用超时。默认值可以通过使用 browser_context.set_default_timeout()page.set_default_timeout() 方法进行修改。

  • element ElementHandle | List[ElementHandle] (可选)#

    要选择的选项元素。可选。

  • index int | List[int] (可选)#

    按索引选择的选项。可选。

  • value str | List[str] (可选)#

    按值选择的选项。如果<select>具有multiple属性,则选择所有给定的选项,否则只选择与传入选项匹配的第一个选项。可选参数。

  • label str | List[str] (可选)#

    通过标签选择选项。如果<select>元素具有multiple属性,则会选中所有匹配的选项;否则只选中第一个与传入选项匹配的选项。此为可选参数。

返回


select_text

Added before v1.9 elementHandle.select_text
Discouraged

请改用基于定位器的locator.select_text()。了解更多关于locators的信息。

该方法等待可操作性检查,然后聚焦元素并选择其所有文本内容。

如果元素位于具有关联control元素内,则聚焦并选择控件中的文本。

用法

element_handle.select_text()
element_handle.select_text(**kwargs)

参数

返回


set_checked

Added in: v1.15 elementHandle.set_checked
Discouraged

请使用基于定位器的 locator.set_checked() 替代。了解更多关于 locators 的信息。

该方法通过执行以下步骤来勾选或取消勾选元素:

  1. 确保元素是复选框或单选输入框。如果不是,该方法会抛出异常。
  2. 如果元素已经处于正确的选中状态,该方法会立即返回。
  3. 等待对匹配元素执行可操作性检查,除非设置了force选项。如果在检查期间元素被分离,则会重试整个操作。
  4. 如果需要,将元素滚动到视图中。
  5. 使用 page.mouse 点击元素的中心位置。
  6. 确保元素现在已被选中或取消选中。如果没有,此方法将抛出异常。

当所有步骤在指定的timeout时间内未完成时,该方法会抛出TimeoutError。传递零超时将禁用此功能。

用法

element_handle.set_checked(checked)
element_handle.set_checked(checked, **kwargs)

参数

  • checked bool#

    是否勾选或取消勾选该复选框。

  • force bool (可选)#

    是否绕过actionability检查。默认为false

  • no_wait_after bool (可选)#

    已弃用

    此选项无效。

    此选项无效。

  • position Dict (可选)#

    一个相对于元素内边距框左上角使用的点。如果未指定,则使用元素的某个可见点。

  • timeout float (可选)#

    最大时间,单位为毫秒。默认为 30000 (30秒)。传入 0 表示禁用超时。默认值可以通过使用 browser_context.set_default_timeout()page.set_default_timeout() 方法进行修改。

  • trial bool (可选)#

    当设置时,此方法仅执行可操作性检查并跳过实际操作。默认为false。适用于等待元素准备好执行操作而无需实际执行的情况。

返回


set_input_files

Added before v1.9 elementHandle.set_input_files
Discouraged

请改用基于定位器的locator.set_input_files()。了解更多关于locators的信息。

将文件输入的值设置为这些文件路径或文件。如果某些filePaths是相对路径,则它们会相对于当前工作目录进行解析。对于空数组,会清除已选文件。对于具有[webkitdirectory]属性的输入,仅支持单个目录路径。

该方法期望ElementHandle指向一个input元素。但是,如果该元素位于具有关联control元素内,则会改为定位到该控件。

用法

element_handle.set_input_files(files)
element_handle.set_input_files(files, **kwargs)

参数

返回


点击

Added before v1.9 elementHandle.tap
Discouraged

请使用基于定位器的 locator.tap() 替代。了解更多关于 locators 的信息。

该方法通过执行以下步骤来点击元素:

  1. 等待元素上的可操作性检查,除非设置了force选项。
  2. 如果需要,将元素滚动到视图中。
  3. 使用 page.touchscreen 点击元素的中心点,或指定的 position

如果在操作过程中元素从DOM中分离,该方法会抛出异常。

当所有步骤在指定的timeout时间内未完成时,该方法会抛出TimeoutError。传递零超时将禁用此功能。

note

elementHandle.tap() 要求浏览器上下文的 hasTouch 选项设置为 true。

用法

element_handle.tap()
element_handle.tap(**kwargs)

参数

  • force bool (可选)#

    是否绕过actionability检查。默认为false

  • modifiers List["Alt" | "Control" | "ControlOrMeta" | "Meta" | "Shift"] (可选)#

    需要按下的修饰键。确保在操作期间只按下这些修饰键,然后恢复当前按下的修饰键。如果未指定,则使用当前按下的修饰键。"ControlOrMeta"在Windows和Linux上解析为"Control",在macOS上解析为"Meta"。

  • no_wait_after bool (可选)#

    已弃用

    此选项无效。

    此选项无效。

  • position Dict (可选)#

    一个相对于元素内边距框左上角使用的点。如果未指定,则使用元素的某个可见点。

  • timeout float (可选)#

    最大时间,单位为毫秒。默认为 30000 (30秒)。传入 0 表示禁用超时。默认值可以通过使用 browser_context.set_default_timeout()page.set_default_timeout() 方法进行修改。

  • trial bool (可选) 添加于: v1.11#

    当设置时,此方法仅执行可操作性检查并跳过实际操作。默认为false。适用于等待元素准备好执行操作而无需实际执行的情况。

返回


text_content

Added before v1.9 elementHandle.text_content
Discouraged

请改用基于定位器的 locator.text_content()。了解更多关于locators的信息。

返回 node.textContent

用法

element_handle.text_content()

返回


类型

Added before v1.9 elementHandle.type
Deprecated

在大多数情况下,您应该使用locator.fill()替代。只有当页面有特殊键盘处理时,您才需要逐个按键 - 在这种情况下使用locator.press_sequentially()

聚焦元素,然后为文本中的每个字符发送keydownkeypress/inputkeyup事件。

要按下特殊键,如ControlArrowDown,请使用element_handle.press()

用法

参数

  • text str#

    要输入到聚焦元素中的文本。

  • delay float (可选参数)#

    按键之间的等待时间,以毫秒为单位。默认为0。

  • no_wait_after bool (可选)#

    已弃用

    此选项无效。

    此选项无效。

  • timeout float (可选)#

    最大时间,单位为毫秒。默认为 30000 (30秒)。传入 0 表示禁用超时。默认值可以通过使用 browser_context.set_default_timeout()page.set_default_timeout() 方法进行修改。

返回


取消勾选

Added before v1.9 elementHandle.uncheck
Discouraged

请改用基于定位器的 locator.uncheck()。了解更多关于 locators 的信息。

该方法通过执行以下步骤来检查元素:

  1. 确保该元素是一个复选框或单选输入框。如果不是,此方法将抛出异常。如果元素已经处于未选中状态,此方法会立即返回。
  2. 等待元素上的可操作性检查,除非设置了force选项。
  3. 如果需要,将元素滚动到视图中。
  4. 使用 page.mouse 点击元素的中心位置。
  5. 确保元素现在处于未选中状态。如果不是,此方法将抛出异常。

如果在操作过程中元素从DOM中分离,该方法会抛出异常。

当所有步骤在指定的timeout时间内未完成时,该方法会抛出TimeoutError。传递零超时将禁用此功能。

用法

element_handle.uncheck()
element_handle.uncheck(**kwargs)

参数

  • force bool (可选)#

    是否绕过actionability检查。默认为false

  • no_wait_after bool (可选)#

    已弃用

    此选项无效。

    此选项无效。

  • position Dict (可选) 添加于: v1.11#

    一个相对于元素内边距框左上角使用的点。如果未指定,则使用元素的某个可见点。

  • timeout float (可选)#

    最大时间,单位为毫秒。默认为 30000 (30秒)。传入 0 表示禁用超时。默认值可以通过使用 browser_context.set_default_timeout()page.set_default_timeout() 方法进行修改。

  • trial bool (可选) 添加于: v1.11#

    当设置时,此方法仅执行可操作性检查并跳过实际操作。默认为false。适用于等待元素准备好执行操作而无需实际执行的情况。

返回


wait_for_selector

Added before v1.9 elementHandle.wait_for_selector
Discouraged

使用断言可见性的网页断言或基于定位器的locator.wait_for()替代。

当元素满足state选项时,返回由选择器指定的元素。如果等待hiddendetached状态,则返回null

等待与元素句柄相关的selector满足state选项(从DOM中出现/消失,或变为可见/隐藏)。如果在调用方法时selector已经满足条件,该方法将立即返回。如果选择器在timeout毫秒内未满足条件,函数将抛出异常。

用法

page.set_content("<div><span></span></div>")
div = page.query_selector("div")
# waiting for the "span" selector relative to the div.
span = div.wait_for_selector("span", state="attached")
note

此方法在导航间不起作用,请改用page.wait_for_selector()

参数

  • selector str#

    用于查询的选择器。

  • state "attached" | "detached" | "visible" | "hidden" (可选)#

    默认为 'visible'。可以是以下任一选项:

    • 'attached' - 等待元素出现在DOM中。
    • 'detached' - 等待元素在DOM中不存在。
    • 'visible' - 等待元素具有非空边界框且不包含visibility:hidden。请注意,没有任何内容或带有display:none的元素具有空边界框,不被视为可见。
    • 'hidden' - 等待元素从DOM中分离,或具有空边界框或visibility:hidden。这与'visible'选项相反。
  • strict bool (可选) 添加于: v1.15#

    当为true时,要求选择器必须解析为单个元素。如果给定的选择器解析出多个元素,调用将抛出异常。

  • timeout float (可选)#

    最大时间,单位为毫秒。默认为 30000 (30秒)。传入 0 表示禁用超时。默认值可以通过使用 browser_context.set_default_timeout()page.set_default_timeout() 方法进行修改。

返回