page.locator("#page").get_by_text("{}".format(i), exact=True).click()
时间: 2024-02-06 21:12:13 浏览: 30
如果你想在 `Locator` 对象上等待元素出现并点击它,可以使用 `locator.wait_for_element_state()` 方法和 `locator.click()` 方法,代码示例如下:
```python
from playwright.sync_api import Playwright, sync_playwright, TimeoutError
with sync_playwright() as playwright:
browser = playwright.chromium.launch()
page = browser.new_page()
# 获取元素的 Locator 对象
locator = page.locator('#page').locator(':text_exact("Hello")')
try:
# 等待 10 秒钟,直到元素状态变为 'visible'
locator.wait_for_element_state('visible', timeout=10000)
# 点击元素
locator.click()
except TimeoutError:
print('超时异常')
browser.close()
```
在上面的代码中,我们首先使用 `page.locator('#page')` 获取父元素的 `Locator` 对象,然后使用 `.locator(':text_exact("Hello")')` 获取子元素的 `Locator` 对象。接着,我们使用 `locator.wait_for_element_state()` 方法来等待元素状态变为 `visible`,最长等待时间为 10 秒钟。如果 10 秒钟内元素状态未变为 `visible`,`wait_for_element_state()` 方法会抛出 `TimeoutError` 异常,我们可以在 `try-except` 语句中捕获并进行处理。
最后,我们调用 `locator.click()` 方法来点击元素。如果元素未出现或者状态未变为 `visible`,`click()` 方法会抛出相应的异常。如果你只想等待元素出现,可以将 `wait_for_element_state()` 方法中的第一个参数设置为 `'visible'`,同时将 `exact` 参数设置为 `True`,表示精确匹配。