Best Python code snippet using playwright-python
scraper.py
Source:scraper.py  
...312    with sync_playwright() as p:313        dir_path = browser_dir.get('chrome_dir')314        if not os.path.exists(dir_path):315            os.makedirs(dir_path)316        browser = p.chromium.launch_persistent_context(user_data_dir='./data',headless=True,permissions=['geolocation'],geolocation={'latitude':37.8136,"longitude":144.9631})317        # else:318        #     shutil.rmtree(f'./{dir_path}')319        # browser = p.webkit.launch_persistent_context(user_data_dir=f'{dir_path}',headless=False)320        # browser = p.webkit.launch(headless=False)321        # elif choise==2:322        #     dir_path = browser_dir.get('chrome_dir')323        #     if not os.path.exists(dir_path):324        #         os.makedirs(dir_path)325        #     # browser = p.webkit.launch(headless=False)326        #     # browser = p.webkit.launch_persistent_context(user_data_dir=f'{dir_path}',headless=False)327        #     # browser = p.firefox.launch(headless=False)328        # else:329        #     dir_path = browser_dir.get('chrome_dir')330        #     if not os.path.exists(dir_path):331        #         os.makedirs(dir_path)332        #     # browser = p.webkit.launch(headless=False)333        #     browser = p.webkit.launch_persistent_context(user_data_dir=f'{dir_path}',headless=False)334        #     # browser = p.webkit.launch(headless=False)335        sc = Scraper(browser=browser,url='https://www.facebook.com/marketplace/melbourne/vehicles?sortBy=creation_time_descend&exact=false',db=db)336        elements = sc.scrape_newest()337def main():338    start = time.time()339    browser_dir = {340    'firefox_dir' : "./data/firefox",341    'chrome_dir' : "./data/chrome",342    'webkit_dir' : "./data/webkit"343    }344    choise = random.randint(1,3)345    print(choise)346    browserRun(browser_dir=browser_dir,choise=choise)347    end = time.time()...test_defaultbrowsercontext.py
Source:test_defaultbrowsercontext.py  
...22    async def _launch(**options):23        nonlocal context24        if context:25            raise ValueError("can only launch one persitent context")26        context = await browser_type.launch_persistent_context(27            str(tmpdir), **{**launch_arguments, **options}28        )29        return (context.pages[0], context)30    yield _launch31    await context.close()32async def test_context_cookies_should_work(server, launch_persistent, is_firefox):33    (page, context) = await launch_persistent()34    await page.goto(server.EMPTY_PAGE)35    document_cookie = await page.evaluate(36        """() => {37    document.cookie = 'username=John Doe';38    return document.cookie;39  }"""40    )41    assert document_cookie == "username=John Doe"42    assert await page.context.cookies() == [43        {44            "name": "username",45            "value": "John Doe",46            "domain": "localhost",47            "path": "/",48            "expires": -1,49            "httpOnly": False,50            "secure": False,51            "sameSite": "None",52        }53    ]54async def test_context_add_cookies_should_work(server, launch_persistent):55    (page, context) = await launch_persistent()56    await page.goto(server.EMPTY_PAGE)57    await page.context.add_cookies(58        [{"url": server.EMPTY_PAGE, "name": "username", "value": "John Doe"}]59    )60    assert await page.evaluate("() => document.cookie") == "username=John Doe"61    assert await page.context.cookies() == [62        {63            "name": "username",64            "value": "John Doe",65            "domain": "localhost",66            "path": "/",67            "expires": -1,68            "httpOnly": False,69            "secure": False,70            "sameSite": "None",71        }72    ]73async def test_context_clear_cookies_should_work(server, launch_persistent):74    (page, context) = await launch_persistent()75    await page.goto(server.EMPTY_PAGE)76    await page.context.add_cookies(77        [78            {"url": server.EMPTY_PAGE, "name": "cookie1", "value": "1"},79            {"url": server.EMPTY_PAGE, "name": "cookie2", "value": "2"},80        ]81    )82    assert await page.evaluate("document.cookie") == "cookie1=1; cookie2=2"83    await page.context.clear_cookies()84    await page.reload()85    assert await page.context.cookies([]) == []86    assert await page.evaluate("document.cookie") == ""87async def test_should_not_block_third_party_cookies(88    server, launch_persistent, is_chromium, is_firefox89):90    (page, context) = await launch_persistent()91    await page.goto(server.EMPTY_PAGE)92    await page.evaluate(93        """src => {94    let fulfill;95    const promise = new Promise(x => fulfill = x);96    const iframe = document.createElement('iframe');97    document.body.appendChild(iframe);98    iframe.onload = fulfill;99    iframe.src = src;100    return promise;101  }""",102        server.CROSS_PROCESS_PREFIX + "/grid.html",103    )104    document_cookie = await page.frames[1].evaluate(105        """() => {106    document.cookie = 'username=John Doe';107    return document.cookie;108  }"""109    )110    await page.wait_for_timeout(2000)111    allows_third_party = is_chromium or is_firefox112    assert document_cookie == ("username=John Doe" if allows_third_party else "")113    cookies = await context.cookies(server.CROSS_PROCESS_PREFIX + "/grid.html")114    if allows_third_party:115        assert cookies == [116            {117                "domain": "127.0.0.1",118                "expires": -1,119                "httpOnly": False,120                "name": "username",121                "path": "/",122                "sameSite": "None",123                "secure": False,124                "value": "John Doe",125            }126        ]127    else:128        assert cookies == []129async def test_should_support_viewport_option(launch_persistent, utils):130    (page, context) = await launch_persistent(viewport={"width": 456, "height": 789})131    await utils.verify_viewport(page, 456, 789)132    page2 = await context.new_page()133    await utils.verify_viewport(page2, 456, 789)134async def test_should_support_device_scale_factor_option(launch_persistent, utils):135    (page, context) = await launch_persistent(device_scale_factor=3)136    assert await page.evaluate("window.devicePixelRatio") == 3137async def test_should_support_user_agent_option(launch_persistent, server):138    (page, context) = await launch_persistent(user_agent="foobar")139    assert await page.evaluate("() => navigator.userAgent") == "foobar"140    [request, _] = await asyncio.gather(141        server.wait_for_request("/empty.html"),142        page.goto(server.EMPTY_PAGE),143    )144    assert request.getHeader("user-agent") == "foobar"145async def test_should_support_bypass_csp_option(launch_persistent, server):146    (page, context) = await launch_persistent(bypass_csp=True)147    await page.goto(server.PREFIX + "/csp.html")148    await page.add_script_tag(content="window.__injected = 42;")149    assert await page.evaluate("() => window.__injected") == 42150async def test_should_support_javascript_enabled_option(launch_persistent, is_webkit):151    (page, context) = await launch_persistent(java_script_enabled=False)152    await page.goto('data:text/html, <script>var something = "forbidden"</script>')153    with pytest.raises(Error) as exc:154        await page.evaluate("something")155    if is_webkit:156        assert "Can't find variable: something" in exc.value.message157    else:158        assert "something is not defined" in exc.value.message159async def test_should_support_http_credentials_option(server, launch_persistent):160    (page, context) = await launch_persistent(161        http_credentials={"username": "user", "password": "pass"}162    )163    server.set_auth("/playground.html", b"user", b"pass")164    response = await page.goto(server.PREFIX + "/playground.html")165    assert response.status == 200166async def test_should_support_offline_option(server, launch_persistent):167    (page, context) = await launch_persistent(offline=True)168    with pytest.raises(Error):169        await page.goto(server.EMPTY_PAGE)170async def test_should_support_has_touch_option(server, launch_persistent):171    (page, context) = await launch_persistent(has_touch=True)172    await page.goto(server.PREFIX + "/mobile.html")173    assert await page.evaluate('() => "ontouchstart" in window')174@pytest.mark.skip_browser("firefox")175async def test_should_work_in_persistent_context(server, launch_persistent):176    # Firefox does not support mobile.177    (page, context) = await launch_persistent(178        viewport={"width": 320, "height": 480}, is_mobile=True179    )180    await page.goto(server.PREFIX + "/empty.html")181    assert await page.evaluate("() => window.innerWidth") == 980182async def test_should_support_color_scheme_option(server, launch_persistent):183    (page, context) = await launch_persistent(color_scheme="dark")184    assert (185        await page.evaluate('() => matchMedia("(prefers-color-scheme: light)").matches')186        is False187    )188    assert await page.evaluate(189        '() => matchMedia("(prefers-color-scheme: dark)").matches'190    )191async def test_should_support_timezone_id_option(launch_persistent):192    (page, context) = await launch_persistent(timezone_id="America/Jamaica")193    assert (194        await page.evaluate("() => new Date(1479579154987).toString()")195        == "Sat Nov 19 2016 13:12:34 GMT-0500 (Eastern Standard Time)"196    )197async def test_should_support_locale_option(launch_persistent):198    (page, context) = await launch_persistent(locale="fr-CH")199    assert await page.evaluate("() => navigator.language") == "fr-CH"200async def test_should_support_geolocation_and_permission_option(201    server, launch_persistent202):203    (page, context) = await launch_persistent(204        geolocation={"longitude": 10, "latitude": 10}, permissions=["geolocation"]205    )206    await page.goto(server.EMPTY_PAGE)207    geolocation = await page.evaluate(208        """() => new Promise(resolve => navigator.geolocation.getCurrentPosition(position => {209    resolve({latitude: position.coords.latitude, longitude: position.coords.longitude});210  }))"""211    )212    assert geolocation == {"latitude": 10, "longitude": 10}213async def test_should_support_ignore_https_errors_option(214    https_server, launch_persistent215):216    (page, context) = await launch_persistent(ignore_https_errors=True)217    response = await page.goto(https_server.EMPTY_PAGE)218    assert response.ok219async def test_should_support_extra_http_headers_option(server, launch_persistent):220    (page, context) = await launch_persistent(extra_http_headers={"foo": "bar"})221    [request, _] = await asyncio.gather(222        server.wait_for_request("/empty.html"),223        page.goto(server.EMPTY_PAGE),224    )225    assert request.getHeader("foo") == "bar"226async def test_should_accept_user_data_dir(server, tmpdir, launch_persistent):227    (page, context) = await launch_persistent()228    # Note: we need an open page to make sure its functional.229    assert len(os.listdir(tmpdir)) > 0230    await context.close()231    assert len(os.listdir(tmpdir)) > 0232@flaky233async def test_should_restore_state_from_userDataDir(234    browser_type, launch_arguments, server, tmp_path_factory235):236    user_data_dir1 = tmp_path_factory.mktemp("test")237    browser_context = await browser_type.launch_persistent_context(238        user_data_dir1, **launch_arguments239    )240    page = await browser_context.new_page()241    await page.goto(server.EMPTY_PAGE)242    await page.evaluate('() => localStorage.hey = "hello"')243    await browser_context.close()244    browser_context2 = await browser_type.launch_persistent_context(245        user_data_dir1, **launch_arguments246    )247    page2 = await browser_context2.new_page()248    await page2.goto(server.EMPTY_PAGE)249    assert await page2.evaluate("() => localStorage.hey") == "hello"250    await browser_context2.close()251    user_data_dir2 = tmp_path_factory.mktemp("test")252    browser_context3 = await browser_type.launch_persistent_context(253        user_data_dir2, **launch_arguments254    )255    page3 = await browser_context3.new_page()256    await page3.goto(server.EMPTY_PAGE)257    assert await page3.evaluate("() => localStorage.hey") != "hello"258    await browser_context3.close()259async def test_should_restore_cookies_from_userDataDir(260    browser_type,261    launch_arguments,262    tmp_path_factory,263    server,264    is_chromium,265    is_win,266    is_mac,267):268    if is_chromium and (is_win or is_mac):269        pytest.skip()270    userDataDir = tmp_path_factory.mktemp("1")271    browser_context = await browser_type.launch_persistent_context(272        userDataDir, **launch_arguments273    )274    page = await browser_context.new_page()275    await page.goto(server.EMPTY_PAGE)276    document_cookie = await page.evaluate(277        """() => {278    document.cookie = 'doSomethingOnlyOnce=true; expires=Fri, 31 Dec 9999 23:59:59 GMT';279    return document.cookie;280  }"""281    )282    assert document_cookie == "doSomethingOnlyOnce=true"283    await browser_context.close()284    browser_context2 = await browser_type.launch_persistent_context(285        userDataDir, **launch_arguments286    )287    page2 = await browser_context2.new_page()288    await page2.goto(server.EMPTY_PAGE)289    assert await page2.evaluate("() => document.cookie") == "doSomethingOnlyOnce=true"290    await browser_context2.close()291    userDataDir2 = tmp_path_factory.mktemp("2")292    browser_context3 = await browser_type.launch_persistent_context(293        userDataDir2, **launch_arguments294    )295    page3 = await browser_context3.new_page()296    await page3.goto(server.EMPTY_PAGE)297    assert await page3.evaluate("() => document.cookie") != "doSomethingOnlyOnce=true"298    await browser_context3.close()299async def test_should_have_default_url_when_launching_browser(launch_persistent):300    (page, context) = await launch_persistent()301    urls = list(map(lambda p: p.url, context.pages))302    assert urls == ["about:blank"]303@pytest.mark.skip_browser("firefox")304async def test_should_throw_if_page_argument_is_passed(305    browser_type, server, tmpdir, launch_arguments306):307    options = {**launch_arguments, "args": [server.EMPTY_PAGE]}308    with pytest.raises(Error) as exc:309        await browser_type.launch_persistent_context(tmpdir, **options)310    assert "can not specify page" in exc.value.message311async def test_should_fire_close_event_for_a_persistent_context(launch_persistent):312    (page, context) = await launch_persistent()313    fired_event = asyncio.Future()314    context.on("close", lambda: fired_event.set_result(True))315    await context.close()...main.py
Source:main.py  
...79    ],80    "creation": creation,81    "lifespan": randint(15, 20),  # minutes82}83p_browser = play.chromium.launch_persistent_context(84    "./", headless=BROWSER["headless"], args=BROWSER["args"]85)86BROWSER["browser"] = p_browser87# get global battle details88BATTLE = {89    "card_details": CARDS_DETAILS,90    "battle_interval": int(os.getenv("BATTLE_INTERVAL")),91    "ecr_min": float(int(os.getenv("ECR_MIN")) / 100),92    "ecr_max": float(int(os.getenv("ECR_MAX")) / 100),93    "prioritize_quest": os.getenv("PRIORITIZE_QUEST").lower() == "true",94}95def main():96    try:97        # Step 0: Build Page98        page = Page(console, BROWSER)99        sleep(uniform(1, 2))100        browser_status = True101        # Step 1: Setup Player102        player = User(console, USER)103        sleep(uniform(1, 2))104        while True:105            try:106                # Step 2: Checks if player is logged in; if not, logs them in107                with console.status(108                    "[bold blue]Checking if player is logged in"109                ) as status:110                    player_login_status = page.is_logged_in(player.username)111                    sleep(randint(1, 3))112                if not player_login_status:113                    console.log(114                        "[bold white]Login Status: [bold red]Currently logged out"115                    )116                    page.logout_account()117                    # Step 2.1: Attempts to login player118                    player_login = page.login(player)119                    sleep(1)120                    if player_login == None:121                        console.log("[bold red]Login attempt failed :x:")122                        sleep(randint(3, 5))123                        break124                    else:125                        console.log(126                            "[bold white] Login Status: [bold green]Login attempt successful :white_check_mark:"127                        )128                else:129                    console.log(130                        "[bold white]Login Status: [bold yellow]Currently logged in"131                    )132                sleep(1)133                # Step 3: Check if player is already in battle134                if not page.is_mid_battle():135                    # Step 3.1: Calculate how long we should wait for ECR to reset136                    ecr_wait = 0137                    with console.status("[bold blue]Calculating Current ECR") as status:138                        ecr_wait = page.calculate_ecr_wait(139                            BATTLE["ecr_min"], BATTLE["ecr_max"]140                        )141                    if ecr_wait > 0:142                        # Step 3.2: If have to wait, close browser and user data143                        BROWSER["browser"].close()144                        with console.status(145                            "[bold blue]Waiting "146                            + str((ecr_wait / 60) / 60)147                            + " Hours",148                            spinner="pong",149                        ) as status:150                            sleep(ecr_wait)151                        p_browser = play.chromium.launch_persistent_context(152                            "./", headless=BROWSER["headless"], args=BROWSER["args"]153                        )154                        BROWSER["browser"] = p_browser155                        page = Page(console, BROWSER)156                        sleep(uniform(1, 2))157                        continue158                    else:159                        for _ in range(2):160                            page.close_modal()161                # Step 4: Initiate battle162                with console.status(163                    "[bold blue]Initiating battle", spinner="shark"164                ) as status:165                    battle_initiation = page.initiate_battle()166                if not battle_initiation:167                    console.log("[bold red]Something occurred during battle initiation")168                    break169                sleep(randint(1, 3))170                # Step 5 Create battle instance with battle details171                with console.status("[bold blue]Getting battle details") as status:172                    battle_details = page.get_battle_details()173                    sleep(1)174                battle = Battle(175                    console, player, CARDS_DETAILS, battle_details, BATTLEBASE176                )177                # Step 6: Choose deck from battle deck logs178                with console.status(179                    "[bold blue]Picking deck", spinner="growVertical"180                ) as status:181                    deck = battle.get_deck(BATTLE["prioritize_quest"])182                sleep(uniform(1, 2))183                # Step 7: Click cards on the page184                page.click_cards(deck)185                # Step 8: Start the battle on the page186                page.start_battle()187                # Step 9: Check who won the battle188                winner = battle.check_winner()189                if winner == USER["username"]:190                    player.battle_streak += 1191                    console.log("[bold white]Winner: [bold green]" + winner)192                    player.battles_won += 1193                elif winner == "DRAW":194                    console.log("[bold white]Winner: [bold yellow]" + winner)195                    player.battles_drawn += 1196                else:197                    player.battle_streak = 0198                    player.battles_lost += 1199                    console.log("[bold white]Winner: [bold red]" + winner)200                player.battles_played += 1201                sleep(uniform(1, 2))202                # Step 9: Attempts to claim rewards203                # if (204                #     CLAIM_REWARD_QUEST205                #     and player.quest["claimed"] == None206                #     and player.quest["quest_total"] == player.quest["completed_total"]207                # ):208                #     page.claim_reward("quest")209                # if CLAIM_REWARD_SEASON:210                # page.claim_reward("season")211                console.log(212                    "[bold white]Battle Stats: [bold green]"213                    + str(player.battles_won)214                    + "[white]/[bold yellow]"215                    + str(player.battles_drawn)216                    + "[white]/[bold red]"217                    + str(player.battles_lost)218                    + " [white]([bold blue]"219                    + str(player.battles_played)220                    + "[white])"221                )222                if player.battle_streak > 1:223                    sleep(uniform(1, 2))224                    console.log(225                        "[bold white]Battle Win Streak: [bold green]"226                        + str(player.battle_streak)227                    )228                sleep(uniform(1, 2))229            except Exception:230                console.print_exception(show_locals=True)231                console.log(232                    "[bold white]Browser Status: [bold red]Error Occurred During Battle Process"233                )234                del page235                BROWSER["browser"].close()236                browser_status = False237            # Step 10: Sleep for set interval238            console.log(239                "[bold white]Rest Period: [bold hot_pink]"240                + str(BATTLE["battle_interval"])241                + " [bold white]Seconds"242            )243            print()244            # Step 10.1: Close browser if older than browser_life_allowed minutes or was closed245            if (246                BROWSER["creation"]247                < datetime.now() - timedelta(minutes=BROWSER["lifespan"])248                and browser_status != False249            ):250                del page251                BROWSER["browser"].close()252                browser_status = False253            sleep(BATTLE["battle_interval"])254            # Step 10.2: Open browser if old one was closed255            if browser_status == False:256                p_browser = play.chromium.launch_persistent_context(257                    "./", headless=BROWSER["headless"], args=BROWSER["args"]258                )259                browser_status = True260                BROWSER["browser"] = p_browser261                BROWSER["creation"] = datetime.now()262                page = Page(console, BROWSER)263                sleep(uniform(1, 2))264    except KeyboardInterrupt:265        console.log("[bold red]Shutdown requested...")266        sleep(3)267    except:268        console.print_exception(show_locals=True)269    sys.exit()270if __name__ == "__main__":...server.py
Source:server.py  
...23			isMobile = True24		# print(windowSize, isMobile)25		# ä¸è½ä¸å è½½å¾ç ä¸ç¶ vue çæ¸²æä¼ä¸å®æ´ï¼çæµæ¯å ä¸º vue çæ¸²æä¼ç¨å°å è½½å¾ççäºä»¶26		# browser = p.chromium.launch(args=['--blink-settings=imagesEnabled=false'], headless=False)27		# browser_context = p.chromium.launch_persistent_context(user_data_dir='./playwright_temp/user', devtools=True, headless=False, viewport=windowSize, is_mobile=isMobile)28		# browser_context = p.chromium.launch_persistent_context(user_data_dir='./playwright_temp/user', viewport=windowSize, is_mobile=isMobile)29		if devtools == True and isMobile == True:30			windowSize['width'] = windowSize['width'] * 231		if user_agent != None:32			ua = user_agent33		if images_enabled == True:34			args = ['--blink-settings=imagesEnabled=false']35		else:36			args = None37		browser_context = p.chromium.launch_persistent_context(args=args, executable_path=executablePath, devtools=devtools, headless=headless, user_data_dir='./playwright_temp/user', user_agent=ua, viewport=windowSize, is_mobile=isMobile)38		browser = browser_context39		page = browser.new_page()40		if load_script != None:41			page.on("load", lambda :page.evaluate(load_script))42		page.goto(url)43		time.sleep(waittime) # çå¾
页颿¸²æå®æ44		if after_script != None:45			page.evaluate(after_script)46		html = page.content()47		browser.close()48	return html49class myHTTPServerRequestHandler(BaseHTTPRequestHandler):50	def do_GET(self):51		# print(self)...LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.
Get 100 minutes of automation test minutes FREE!!
