DOMException: Failed to execute 'querySelectorAll' on 'Document': ':text_exact("3")' is not a valid selector. at query (<anonymous>:3166:41) at <anonymous>:3176:7 at SelectorEvaluatorImpl._cached (<anonymous>:2964:20) at SelectorEvaluatorImpl._queryCSS (<anonymous>:3163:17) at SelectorEvaluatorImpl._querySimple (<anonymous>:3040:19) at <anonymous>:2998:29 at SelectorEvaluatorImpl._cached (<anonymous>:2964:20) at SelectorEvaluatorImpl.query (<anonymous>:2993:19) at Object.query (<anonymous>:3198:44) at <anonymous>:3156:21 =========================== logs =========================== waiting for locator("#page :text_exact(\"3\")") to be visible ============================================================
时间: 2023-08-06 19:09:02 浏览: 67
在 Playwright Python 中,`:text_exact("...")` 不是一个合法的选择器,因此会出现 `DOMException: Failed to execute 'querySelectorAll' on 'Document': ':text_exact("...")' is not a valid selector.` 的错误提示。
如果你想在 Playwright Python 中选择文本内容精确匹配的元素,可以使用 `xpath` 选择器,并结合 `text()` 函数和 `normalize-space()` 函数来实现。具体来说,你可以使用以下选择器来选择文本内容为 '3' 的元素:
```python
# 选择文本内容为 '3' 的元素
page.locator('//button[normalize-space(text())="3"]')
```
在上面的选择器中,我们使用 `//button` 来选择所有的 `button` 元素,然后使用 `[normalize-space(text())="3"]` 选择文本内容为 '3' 的元素。其中,`normalize-space()` 函数用于移除文本内容前后的空格和换行符等空白字符。
以下是一个示例代码,用于等待文本内容为 '3' 的元素出现并点击它:
```python
from playwright.sync_api import Playwright, sync_playwright, TimeoutError
with sync_playwright() as playwright:
browser = playwright.chromium.launch()
page = browser.new_page()
try:
# 等待 10 秒钟,直到元素出现
page.wait_for_selector('//button[normalize-space(text())="3"]', timeout=10000).click()
except TimeoutError:
print('超时异常')
browser.close()
```
在上面的代码中,我们使用 `page.wait_for_selector()` 方法来等待文本内容为 '3' 的元素出现,同时指定 `timeout` 参数为 10000 毫秒,表示最长等待时间为 10 秒钟。如果 10 秒钟内元素未出现,`wait_for_selector()` 方法会抛出 `TimeoutError` 异常,我们可以在 `try-except` 语句中捕获并进行处理。如果元素出现,我们调用 `click()` 方法来点击它。