geido commented on code in PR #26224:
URL: https://github.com/apache/superset/pull/26224#discussion_r1420503480
##########
superset/utils/webdriver.py:
##########
@@ -166,34 +152,40 @@ def get_screenshot(self, url: str, element_name: str,
user: User) -> bytes | Non
)
self.auth(user, context)
page = context.new_page()
- page.goto(
- url,
wait_until=current_app.config["SCREENSHOT_PLAYWRIGHT_WAIT_EVENT"]
- )
+ try:
+ page.goto(
+ url,
+
wait_until=current_app.config["SCREENSHOT_PLAYWRIGHT_WAIT_EVENT"],
+ )
+ except PlaywrightTimeout:
+ logger.exception(
+ "Web event %s not detected. Page %s might not have been
fully loaded",
+ current_app.config["SCREENSHOT_PLAYWRIGHT_WAIT_EVENT"],
+ url,
+ )
+
img: bytes | None = None
selenium_headstart =
current_app.config["SCREENSHOT_SELENIUM_HEADSTART"]
logger.debug("Sleeping for %i seconds", selenium_headstart)
page.wait_for_timeout(selenium_headstart * 1000)
- element: ElementHandle
+ element: Locator
try:
try:
# page didn't load
logger.debug(
"Wait for the presence of %s at url: %s",
element_name, url
)
- element = page.wait_for_selector(
- f".{element_name}",
- timeout=self._screenshot_locate_wait * 1000,
- )
+ element = page.locator(f".{element_name}")
+ element.wait_for()
except PlaywrightTimeout as ex:
logger.exception("Timed out requesting url %s", url)
raise ex
try:
# chart containers didn't render
logger.debug("Wait for chart containers to draw at url:
%s", url)
- page.wait_for_selector(
- ".slice_container",
timeout=self._screenshot_locate_wait * 1000
- )
+ for slice_container_elem in
page.locator(".slice_container").all():
Review Comment:
I assume all of these .all() methods are safe for the loop and will just
return empty if none are present
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]