page.locator()/page.locator().all()
-
返回类型
-
page.locator()
返回一个 locator 对象,表示所有匹配选择器的元素集合,而不是单个元素。 -
惰性执行
-
创建 locator 对象时并不会立即执行任何操作,只有当你调用 locator 上的方法时(如
.click()
,.fill()
,.nth()
等)才会执行相应的操作。
-
-
操作方法
-
page.locator()
返回的对象提供了许多方法,如.click()
,.fill()
,.press()
,.evaluate()
等,可以直接在 locator 对象上调用这些方法来操作元素。
-
-
多元素操作
- 可以使用
.all()
获取所有匹配的元素,或者使用.nth(index)
来获取特定索引的元素。如果.all()找不到时,返回空列表[]。
- 可以使用
- Locator执行方法时,比如locator.click()
- 如果元素查询不到时,提示操作超时异常时。如playwright._impl._errors.TimeoutError: Locator.click: Timeout 30000ms exceeded.E Call log:E waiting for locator("div[id=\"suggestion-list123\"] > *")
-----------------------------------------------------------------------------------------------------------
wait_for_element_state()
你可以使用 Locator 的 wait_for_element_state() 方法来等待元素达到特定的状态。这个方法支持的状态有:
visible: 等待元素变得可见(即不透明、宽度和高度大于0,并且其父级节点也是可见的)。
hidden: 等待元素变为隐藏(即不可见或不在DOM中)。
enabled: 等待元素变为启用状态(即没有被禁用属性标记)。
disabled: 等待元素变为禁用状态。
editable: 等待元素变为可编辑状态(例如文本框或内容可编辑的div)。
detached: 等待元素从DOM中移除。
总结
wait_for_element_state(state, timeout=None) 是用于等待元素达到特定状态的方法,支持的状态包括:visible, hidden, enabled, disabled, editable, 和 detached。
如果你需要立即检查某个元素的状态而不需要等待,可以使用相应的 is_* 方法,如 is_visible(), is_enabled() 等。
-----------------------------------------------------------------------------------------------------------
page.wait_for_selector()
page.wait_for_selector()
方法主要用于等待页面上的某个元素变得可用或可见。它会阻塞脚本执行,直到满足指定条件为止。
方法签名
page.wait_for_selector(selector, state=None, timeout=None)
参数说明
selector
: CSS 选择器字符串,用于匹配页面上的元素。state
(可选): 指定元素的状态。可以是'attached'
,'detached'
,'visible'
,'hidden'
。默认为'visible'
。不支持“enable”状态。
状态 | 含义 |
---|---|
"visible" |
默认值,等待元素可见。 |
"hidden" |
等待元素隐藏(存在于 DOM 中但不可见,或从 DOM 中移除)。 |
"attac |