Spaces:
Running
Running
Trisha Tomy
commited on
Commit
·
c8e914e
1
Parent(s):
a4a1211
trying fixes for loading
Browse files
src/proxy_lite/browser/browser.py
CHANGED
@@ -185,48 +185,48 @@ class BrowserSession:
|
|
185 |
)
|
186 |
async def update_poi(self) -> None:
|
187 |
try:
|
188 |
-
#
|
189 |
-
await self.current_page.wait_for_load_state("
|
190 |
-
logger.debug("wait_for_load_state('
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
191 |
|
192 |
-
#
|
193 |
-
#
|
194 |
try:
|
195 |
-
await self.current_page.wait_for_selector("body", timeout=
|
196 |
logger.debug("wait_for_selector('body', state='visible') completed.")
|
197 |
except PlaywrightTimeoutError as e:
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
if self.current_page:
|
205 |
-
html_content = await self.current_page.content()
|
206 |
-
# Log only a snippet of HTML to avoid excessively large logs
|
207 |
-
logger.error(f"DEBUGGING: HTML Content (first 1000 chars) when timeout occurred:\n{html_content[:1000]}...")
|
208 |
-
except Exception as html_e:
|
209 |
-
logger.error(f"DEBUGGING: Could not get HTML content: {html_e}")
|
210 |
-
|
211 |
-
screenshot_b64 = "N/A"
|
212 |
-
try:
|
213 |
-
if self.current_page:
|
214 |
-
# Capture screenshot at lower quality to keep log size manageable
|
215 |
-
screenshot_bytes = await self.current_page.screenshot(type="jpeg", quality=50)
|
216 |
-
screenshot_b64 = base64.b64encode(screenshot_bytes).decode("utf-8")
|
217 |
-
# Log only a very short snippet of base64 string
|
218 |
-
logger.error(f"DEBUGGING: Base64 Screenshot (truncated) when timeout occurred:\ndata:image/jpeg;base64,{screenshot_b64[:100]}... (full string is much longer)")
|
219 |
-
except Exception as ss_e:
|
220 |
-
logger.error(f"DEBUGGING: Could not take screenshot: {ss_e}")
|
221 |
-
|
222 |
-
# Re-raise the original exception to ensure the task still fails,
|
223 |
-
# but now with crucial debugging information in the logs.
|
224 |
-
raise e
|
225 |
-
# --- END TEMPORARY DEBUGGING CODE ---
|
226 |
|
227 |
except PlaywrightTimeoutError: # This outer catch is for the wait_for_load_state timeout
|
228 |
-
logger.error(f"Timeout waiting for website load state (
|
229 |
-
raise # Re-raise if load_state itself times out
|
230 |
|
231 |
except Exception as e:
|
232 |
logger.error(f"An unexpected error occurred during page readiness check: {e}")
|
|
|
185 |
)
|
186 |
async def update_poi(self) -> None:
|
187 |
try:
|
188 |
+
# We will use "domcontentloaded" as a base and then wait for specific elements
|
189 |
+
await self.current_page.wait_for_load_state("domcontentloaded", timeout=60000) # Reduced timeout for initial load
|
190 |
+
logger.debug("wait_for_load_state('domcontentloaded') completed.")
|
191 |
+
|
192 |
+
# --- MODIFICATION START ---
|
193 |
+
# Wait for the "Account Forecasting" heading to be visible
|
194 |
+
# Adjust the selector below based on the actual HTML of the Salesforce page.
|
195 |
+
# Common selectors could be:
|
196 |
+
# - `h1:has-text('Account Forecasting')`
|
197 |
+
# - `h2:has-text('Account Forecasting')`
|
198 |
+
# - `div.some-class-name:has-text('Account Forecasting')`
|
199 |
+
# - `[data-qa-id="account-forecasting-heading"]` (if Salesforce uses data-qa attributes)
|
200 |
+
# You might need to inspect the Salesforce page to get the exact selector.
|
201 |
+
# For now, let's assume it's an h1 or h2 tag containing the text.
|
202 |
+
try:
|
203 |
+
await self.current_page.wait_for_selector(
|
204 |
+
"h1:has-text('Account Forecasting'), h2:has-text('Account Forecasting')",
|
205 |
+
timeout=60000, # Set a reasonable timeout for this specific element
|
206 |
+
state="visible"
|
207 |
+
)
|
208 |
+
logger.debug("Successfully waited for 'Account Forecasting' heading.")
|
209 |
+
except PlaywrightTimeoutError as e:
|
210 |
+
logger.error(f"Timeout waiting for 'Account Forecasting' heading on URL: {self.current_page.url}")
|
211 |
+
# You might want to log more specific HTML/screenshot here if this still times out often
|
212 |
+
raise # Re-raise if this critical element doesn't appear
|
213 |
|
214 |
+
# It's still good to wait for the body to be visible, but with a shorter timeout
|
215 |
+
# if the previous specific heading check passed.
|
216 |
try:
|
217 |
+
await self.current_page.wait_for_selector("body", timeout=30000, state="visible")
|
218 |
logger.debug("wait_for_selector('body', state='visible') completed.")
|
219 |
except PlaywrightTimeoutError as e:
|
220 |
+
logger.warning(f"DEBUGGING: Playwright Timeout (30s) on body selector, but 'Account Forecasting' heading was found. This might be acceptable if the page is usable.")
|
221 |
+
# We can choose to suppress this specific timeout if the critical element is found,
|
222 |
+
# or re-raise it if a fully loaded body is strictly necessary for further actions.
|
223 |
+
# For now, let's just log and continue, as the primary issue was full page load.
|
224 |
+
pass # Do not re-raise if we've found our key indicator.
|
225 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
226 |
|
227 |
except PlaywrightTimeoutError: # This outer catch is for the wait_for_load_state timeout
|
228 |
+
logger.error(f"Timeout waiting for website load state (domcontentloaded): {self.current_url}")
|
229 |
+
raise # Re-raise if initial load_state itself times out
|
230 |
|
231 |
except Exception as e:
|
232 |
logger.error(f"An unexpected error occurred during page readiness check: {e}")
|