我有一个非常简单的htmx示例,可以手动运行,但通过 Playwright 失败:
你可以在这里测试它:https ://thomas-guettler.de/htmx-snippets/load-fragment-via-hx-get.html
import os
from playwright.sync_api import sync_playwright
def run(playwright):
browser = playwright.chromium.launch(headless=False, devtools=True)
context = browser.new_context()
page = context.new_page()
page.goto("https://thomas-guettler.de/htmx-snippets/load-fragment-via-hx-get.html")
page.click("text=load second button")
page.click("text=Reload Parent OOB")
page.dblclick("text=This should be the end")
# ---------------------
context.close()
browser.close()
os.environ['DEBUG'] = 'pw:api'
with sync_playwright() as playwright:
run(playwright)```
加载第二个按钮有效,但“重新加载父 OOB”失败。
可能是什么原因?
2021-03-19T06:39:17.114Z pw:api navigating to "https://thomas-guettler.de/htmx-snippets/load-fragment-via-hx-get.html", waiting until "load"
2021-03-19T06:39:17.317Z pw:api navigated to "https://thomas-guettler.de/htmx-snippets/load-fragment-via-hx-get.html"
2021-03-19T06:39:17.534Z pw:api "domcontentloaded" event fired
2021-03-19T06:39:17.547Z pw:api "load" event fired
2021-03-19T06:39:17.554Z pw:api waiting for selector "text=load second button"
2021-03-19T06:39:17.591Z pw:api selector resolved to visible <button hx-swap="outerHTML" hx-get="second-button.htmx">load second button</button>
2021-03-19T06:39:17.599Z pw:api attempting click action
2021-03-19T06:39:17.599Z pw:api waiting for element to be visible, enabled and stable
2021-03-19T06:39:17.635Z pw:api element is visible, enabled and stable
2021-03-19T06:39:17.635Z pw:api scrolling into view if needed
2021-03-19T06:39:17.636Z pw:api done scrolling
2021-03-19T06:39:17.638Z pw:api checking that element receives pointer events at (117.19,18.48)
2021-03-19T06:39:17.643Z pw:api element does receive pointer events
2021-03-19T06:39:17.643Z pw:api performing click action
2021-03-19T06:39:17.653Z pw:api click action done
2021-03-19T06:39:17.653Z pw:api waiting for scheduled navigations to finish
2021-03-19T06:39:17.656Z pw:api navigations have finished
2021-03-19T06:39:17.660Z pw:api waiting for selector "text=Reload Parent OOB"
2021-03-19T06:39:17.688Z pw:api selector resolved to visible <button class="htmx-settling" hx-get="reload-parent-oob.…>Reload Parent OOB</button>
2021-03-19T06:39:17.692Z pw:api attempting click action
2021-03-19T06:39:17.692Z pw:api waiting for element to be visible, enabled and stable
2021-03-19T06:39:17.716Z pw:api element is visible, enabled and stable
2021-03-19T06:39:17.717Z pw:api scrolling into view if needed
2021-03-19T06:39:17.717Z pw:api done scrolling
2021-03-19T06:39:17.719Z pw:api checking that element receives pointer events at (120.14,18.48)
2021-03-19T06:39:17.727Z pw:api element does receive pointer events
2021-03-19T06:39:17.727Z pw:api performing click action
2021-03-19T06:39:17.730Z pw:api click action done
2021-03-19T06:39:17.730Z pw:api waiting for scheduled navigations to finish
2021-03-19T06:39:17.743Z pw:api navigations have finished
2021-03-19T06:39:17.746Z pw:api waiting for selector "text=This should be the end"
2021-03-19T06:39:18.179Z pw:api "networkidle" event fired
Traceback (most recent call last):
File "/home/guettli/projects/lala-env/src/lala/lala/playwright/test.py", line 24, in <module>
run(playwright)
File "/home/guettli/projects/lala-env/src/lala/lala/playwright/test.py", line 16, in run
page.dblclick("text=This should be the end")
File "/home/guettli/projects/lala-env/lib/python3.8/site-packages/playwright/sync_api/_generated.py", line 6437, in dblclick
self._sync(
File "/home/guettli/projects/lala-env/lib/python3.8/site-packages/playwright/_impl/_sync_base.py", line 103, in _sync
return task.result()
File "/home/guettli/projects/lala-env/lib/python3.8/site-packages/playwright/_impl/_page.py", line 611, in dblclick
return await self._main_frame.dblclick(**locals_to_params(locals()))
File "/home/guettli/projects/lala-env/lib/python3.8/site-packages/playwright/_impl/_frame.py", line 387, in dblclick
await self._channel.send("dblclick", locals_to_params(locals()))
File "/home/guettli/projects/lala-env/lib/python3.8/site-packages/playwright/_impl/_connection.py", line 36, in send
return await self.inner_send(method, params, False)
File "/home/guettli/projects/lala-env/lib/python3.8/site-packages/playwright/_impl/_connection.py", line 47, in inner_send
result = await callback.future
playwright._impl._api_types.TimeoutError: Timeout 30000ms exceeded.
=========================== logs ===========================
waiting for selector "text=This should be the end"