#!/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()
【web_UI_微软自动化测试框架】Klaywright,官方案例(同步运行/异步运行/移动端运行/获取接口响应信息/获取页面HTML/网络劫持等)
最新推荐文章于 2024-05-16 15:35:08 发布