File size: 2,594 Bytes
8d1819a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# import asyncio
# from python.helpers.tool import Tool, Response
# from python.tools.browser import Browser
# from python.helpers.browser import NoPageError
# import asyncio


# class BrowserDo(Browser):

#     async def execute(self, fill=[], press=[], click=[], execute="", **kwargs):
#         await self.prepare_state()
#         result = ""
#         try:
#             if fill:
#                 self.update_progress("Filling fields...")
#                 for f in fill:
#                     await self.state.browser.fill(f["selector"], f["text"])
#                     await self.state.browser.wait(0.5)
#             if press:
#                 self.update_progress("Pressing keys...")
#                 if fill:
#                     await self.state.browser.wait(1)
#                 for p in press:
#                     await self.state.browser.press(p)
#                     await self.state.browser.wait(0.5)
#             if click:
#                 self.update_progress("Clicking...")
#                 if fill:
#                     await self.state.browser.wait(1)
#                 for c in click:
#                     await self.state.browser.click(c)
#                     await self.state.browser.wait(0.5)
#             if execute:
#                 if fill or press or click:
#                     await self.state.browser.wait(1)
#                 self.update_progress("Executing...")
#                 result = await self.state.browser.execute(execute)
#                 self.log.update(result=result)

#             self.update_progress("Retrieving...")
#             await self.state.browser.wait_for_action()
#             dom = await self.state.browser.get_clean_dom()
#             if result:
#                 response = f"Result:\n{result}\n\nDOM:\n{dom}"
#             else:
#                 response = dom
#             self.update_progress("Taking screenshot...")
#             screenshot = await self.save_screenshot()
#             self.log.update(screenshot=screenshot)
#         except Exception as e:
#             response = str(e)
#             self.log.update(error=response)
            
#             try:
#                 screenshot = await self.save_screenshot()
#                 dom = await self.state.browser.get_clean_dom()
#                 response = f"Error:\n{response}\n\nDOM:\n{dom}"
#                 self.log.update(screenshot=screenshot)
#             except Exception:
#                 pass

#         self.cleanup_history()
#         self.update_progress("Done")
#         return Response(message=response, break_loop=False)