【web_UI_微软自动化测试框架】Klaywright,官方案例(同步运行/异步运行/移动端运行/获取接口响应信息/获取页面HTML/网络劫持等)

#!/usr/bin/env/python3
# -*- coding:utf-8 -*-
'''
Author:leo
Date&Time:2022/1/4 11:01
Project:python  
FileName:test_playwright.py
Desc:初识playwright
'''
class Test_playwright():
    def __init__(self):
        pass

    def sync_baidu(self):
        """同步运行,依次打开百度,获取标题,打印信息"""
        from playwright.sync_api import sync_playwright
        with sync_playwright() as p:
            for browser_type in [p.chromium, p.firefox, p.webkit]:
                browser = browser_type.launch(headless=False)
                page = browser.new_page()
                page.goto('https://www.baidu.com')
                page.screenshot(path=f'screenshot-{browser_type.name}.png')
                print(page.title())
                browser.close()

    def async_baidu(self):
        """异步运行,同时打开百度,获取标题,打印信息"""
        import asyncio
        from playwright.async_api import async_playwright
        async def main():
            async with async_playwright() as p:
                for browser_type in [p.chromium, p.firefox, p.webkit]:
                    browser = await browser_type.launch(headless=False, timeout=60000)
                    page = await browser.new_page()
                    await page.goto('https://www.baidu.com')
                    await page.screenshot(path=f'screenshot-{browser_type.name}.png')
                    print(await page.title())
                    await browser.close()
        asyncio.run(main())

    def mobile_python(self):
        from playwright.sync_api import sync_playwright
        with sync_playwright() as p:
            iphone_12_pro_max = p.devices['iPhone 12 Pro Max']
            browser = p.webkit.launch(headless=False)
            context = browser.new_context(
                **iphone_12_pro_max,
                locale='zh-CN',
                geolocation={'longitude': 116.39014, 'latitude': 39.913904},
                permissions=['geolocation']
            )
            page = context.new_page()
            page.goto('https://amap.com')
            page.wait_for_load_state(state='networkidle')
            page.screenshot(path='location-iphone.png')
            browser.close()

    def get_response_1(self):
        """获取接口信息"""
        from playwright.sync_api import sync_playwright
        def on_response(response):
            print(f'Statue {response.status}: {response.url}')
        with sync_playwright() as p:
            browser = p.chromium.launch(headless=False, timeout=60000)
            page = browser.new_page()
            page.on('response', on_response)
            page.goto('https://spa6.scrape.center/')
            page.wait_for_load_state('networkidle')
            browser.close()

    def get_response_2(self):
        from playwright.sync_api import sync_playwright
        from rich import print as r_print
        def on_response(response):
            if '/api/movie/' in response.url and response.status == 200:
                r_print(response.json())
        with sync_playwright() as p:
            browser = p.chromium.launch(headless=False, timeout=60000)
            page = browser.new_page()
            page.on('response', on_response)
            page.goto('https://spa6.scrape.center/')
            page.wait_for_load_state('networkidle')
            browser.close()

    def get_pagehtml(self):
        """获取页面HTML"""
        from playwright.sync_api import sync_playwright
        with sync_playwright() as p:
            browser = p.chromium.launch(headless=False, timeout=60000)
            page = browser.new_page()
            page.goto('https://spa6.scrape.center/')
            page.wait_for_load_state('networkidle')
            html = page.content()
            print(html)
            browser.close()

    def route_Network_hijacking(self):
        """网络劫持"""
        from playwright.sync_api import sync_playwright
        import re

        with sync_playwright() as p:
            browser = p.chromium.launch(headless=False)
            page = browser.new_page()

            def cancel_request(route, request):
                route.abort()

            page.route(re.compile(r"(\.png)|(\.jpg)"), cancel_request)
            page.goto("https://spa6.scrape.center/")
            page.wait_for_load_state('networkidle')
            page.screenshot(path='no_picture.png')
            browser.close()

if __name__ == '__main__':
    test = Test_playwright()
    # test.sync_baidu()
    # test.async_baidu()
    # test.get_response_1()
    # test.get_response_2()
    # test.get_pagehtml()
    test.route_Network_hijacking()

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值