File size: 918 Bytes
c80ddc9
 
 
 
 
628b360
c80ddc9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
dd94df2
 
c80ddc9
 
 
 
 
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
from playwright.sync_api import sync_playwright

class BrowserController:
    def __init__(self):
        self.playwright = sync_playwright().start()
        self.browser = self.playwright.chromium.launch(headless=True)
        self.page = self.browser.new_page()

    def navigate(self, url):
        self.page.goto(url)
        return self.get_state()

    def click(self, selector):
        self.page.click(selector)
        return self.get_state()

    def type_text(self, selector, text):
        self.page.fill(selector, text)
        return self.get_state()

    def scroll(self, pixels):
        self.page.evaluate(f'window.scrollBy(0, {pixels})')
        return self.get_state()

    def get_state(self):
        return {
            "screenshot": self.page.screenshot().hex(),
            "html": self.page.content()
        }

    def close(self):
        self.browser.close()
        self.playwright.stop()