(self, project_name)
| 37 | return True |
| 38 | |
| 39 | async def screenshot(self, project_name): |
| 40 | screenshots_save_path = Config().get_screenshots_dir() |
| 41 | |
| 42 | page_metadata = await self.page.evaluate("() => { return { url: document.location.href, title: document.title } }") |
| 43 | page_url = page_metadata['url'] |
| 44 | random_filename = os.urandom(20).hex() |
| 45 | filename_to_save = f"{random_filename}.png" |
| 46 | path_to_save = os.path.join(screenshots_save_path, filename_to_save) |
| 47 | |
| 48 | await self.page.emulate_media(media="screen") |
| 49 | await self.page.screenshot(path=path_to_save, full_page=True) |
| 50 | screenshot = await self.page.screenshot() |
| 51 | screenshot_bytes = base64.b64encode(screenshot).decode() |
| 52 | new_state = self.agent.new_state() |
| 53 | new_state["internal_monologue"] = "Browsing the web right now..." |
| 54 | new_state["browser_session"]["url"] = page_url |
| 55 | new_state["browser_session"]["screenshot"] = path_to_save |
| 56 | self.agent.add_to_current_state(project_name, new_state) |
| 57 | # self.close() |
| 58 | return path_to_save, screenshot_bytes |
| 59 | |
| 60 | def get_html(self): |
| 61 | return self.page.content() |
no test coverage detected