├── .gitignore
├── browser-info.png
├── custom_response.html
├── get_ajax.py
├── get_all.py
├── get_attr.py
├── get_html.py
├── get_one.py
├── init.py
├── init2.py
├── init3.py
├── location-iphone.png
├── modify_request.py
├── modify_response.py
├── no_picture.png
├── on_load.py
├── screenshot-chromium.png
├── screenshot-firefox.png
├── screenshot-webkit.png
├── script.py
├── webkit_test.py
└── webkit_test2.py
/.gitignore:
--------------------------------------------------------------------------------
1 | .idea/
2 | .vscode/
3 | *.pyc
4 | .DS_Store
--------------------------------------------------------------------------------
/browser-info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Python3WebSpider/PlaywrightTest/14af74340406d44c607b049bd4d49575f1662b0d/browser-info.png
--------------------------------------------------------------------------------
/custom_response.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Hack Response
5 |
6 |
7 | Hack Response
8 |
9 |
--------------------------------------------------------------------------------
/get_ajax.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import sync_playwright
2 |
3 |
4 | def on_response(response):
5 | if '/api/movie/' in response.url and response.status == 200:
6 | print(response.json())
7 |
8 |
9 | with sync_playwright() as p:
10 | browser = p.chromium.launch(headless=False)
11 | page = browser.new_page()
12 | page.on('response', on_response)
13 | page.goto('https://spa6.scrape.center/')
14 | page.wait_for_load_state('networkidle')
15 | browser.close()
16 |
--------------------------------------------------------------------------------
/get_all.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import sync_playwright
2 |
3 | with sync_playwright() as p:
4 | browser = p.chromium.launch(headless=False)
5 | page = browser.new_page()
6 | page.goto('https://spa6.scrape.center/')
7 | page.wait_for_load_state('networkidle')
8 | elements = page.query_selector_all('a.name')
9 | for element in elements:
10 | print(element.get_attribute('href'))
11 | print(element.text_content())
12 | browser.close()
13 |
--------------------------------------------------------------------------------
/get_attr.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import sync_playwright
2 |
3 | with sync_playwright() as p:
4 | browser = p.chromium.launch(headless=False)
5 | page = browser.new_page()
6 | page.goto('https://spa6.scrape.center/')
7 | page.wait_for_load_state('networkidle')
8 | href = page.get_attribute('a.name', 'href')
9 | print(href)
10 | browser.close()
11 |
--------------------------------------------------------------------------------
/get_html.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import sync_playwright
2 |
3 | with sync_playwright() as p:
4 | browser = p.chromium.launch(headless=False)
5 | page = browser.new_page()
6 | page.goto('https://spa6.scrape.center/')
7 | page.wait_for_load_state('networkidle')
8 | html = page.content()
9 | print(html)
10 | browser.close()
11 |
--------------------------------------------------------------------------------
/get_one.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import sync_playwright
2 |
3 | with sync_playwright() as p:
4 | browser = p.chromium.launch(headless=False)
5 | page = browser.new_page()
6 | page.goto('https://spa6.scrape.center/')
7 | page.wait_for_load_state('networkidle')
8 | element = page.query_selector('a.name')
9 | print(element.get_attribute('href'))
10 | print(element.text_content())
11 | browser.close()
12 |
--------------------------------------------------------------------------------
/init.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import sync_playwright
2 |
3 | with sync_playwright() as p:
4 | for browser_type in [p.chromium, p.firefox, p.webkit]:
5 | browser = browser_type.launch(headless=False)
6 | page = browser.new_page()
7 | page.goto('https://www.baidu.com')
8 | page.screenshot(path=f'screenshot-{browser_type.name}.png')
9 | print(page.title())
10 | browser.close()
11 |
--------------------------------------------------------------------------------
/init2.py:
--------------------------------------------------------------------------------
1 | import asyncio
2 | from playwright.async_api import async_playwright
3 |
4 |
5 | async def main():
6 | async with async_playwright() as p:
7 | for browser_type in [p.chromium, p.firefox, p.webkit]:
8 | browser = await browser_type.launch(headless=False)
9 | page = await browser.new_page()
10 | await page.goto('https://www.baidu.com')
11 | await page.screenshot(path=f'screenshot-{browser_type.name}.png')
12 | print(await page.title())
13 | await browser.close()
14 |
15 | asyncio.run(main())
16 |
--------------------------------------------------------------------------------
/init3.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import sync_playwright
2 |
3 | playwright = sync_playwright().start()
4 | for browser_type in [playwright.chromium, playwright.firefox, playwright.webkit]:
5 | browser = browser_type.launch(headless=False)
6 | page = browser.new_page()
7 | page.goto('https://www.baidu.com')
8 | page.screenshot(path=f'screenshot-{browser_type.name}.png')
9 | print(page.title())
10 | browser.close()
11 | playwright.stop()
12 |
--------------------------------------------------------------------------------
/location-iphone.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Python3WebSpider/PlaywrightTest/14af74340406d44c607b049bd4d49575f1662b0d/location-iphone.png
--------------------------------------------------------------------------------
/modify_request.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import sync_playwright
2 | import re
3 | import time
4 |
5 | with sync_playwright() as p:
6 | browser = p.chromium.launch(headless=False)
7 | page = browser.new_page()
8 |
9 | def cancel_request(route, request):
10 | route.abort()
11 |
12 | page.route(re.compile(r"(\.png)|(\.jpg)"), cancel_request)
13 | page.goto("https://spa6.scrape.center/")
14 | page.wait_for_load_state('networkidle')
15 | page.screenshot(path='no_picture.png')
16 | time.sleep(10)
17 | browser.close()
18 |
--------------------------------------------------------------------------------
/modify_response.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import sync_playwright
2 | import time
3 |
4 | with sync_playwright() as p:
5 | browser = p.chromium.launch(headless=False)
6 | page = browser.new_page()
7 |
8 | def modify_response(route, request):
9 | route.fulfill(path="./custom_response.html")
10 |
11 | page.route('/', modify_response)
12 | page.goto("https://spa6.scrape.center/")
13 | time.sleep(10)
14 | browser.close()
15 |
--------------------------------------------------------------------------------
/no_picture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Python3WebSpider/PlaywrightTest/14af74340406d44c607b049bd4d49575f1662b0d/no_picture.png
--------------------------------------------------------------------------------
/on_load.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import sync_playwright
2 |
3 |
4 | def on_response(response):
5 | print(f'Statue {response.status}: {response.url}')
6 |
7 |
8 | with sync_playwright() as p:
9 | browser = p.chromium.launch(headless=False)
10 | page = browser.new_page()
11 | page.on('response', on_response)
12 | page.goto('https://spa6.scrape.center/')
13 | page.wait_for_load_state('networkidle')
14 | browser.close()
15 |
--------------------------------------------------------------------------------
/screenshot-chromium.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Python3WebSpider/PlaywrightTest/14af74340406d44c607b049bd4d49575f1662b0d/screenshot-chromium.png
--------------------------------------------------------------------------------
/screenshot-firefox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Python3WebSpider/PlaywrightTest/14af74340406d44c607b049bd4d49575f1662b0d/screenshot-firefox.png
--------------------------------------------------------------------------------
/screenshot-webkit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Python3WebSpider/PlaywrightTest/14af74340406d44c607b049bd4d49575f1662b0d/screenshot-webkit.png
--------------------------------------------------------------------------------
/script.py:
--------------------------------------------------------------------------------
1 | from playwright.sync_api import sync_playwright
2 |
3 | def run(playwright):
4 | browser = playwright.firefox.launch(headless=False)
5 | context = browser.new_context()
6 |
7 | # Open new page
8 | page = context.new_page()
9 |
10 | # Go to https://www.baidu.com/
11 | page.goto("https://www.baidu.com/")
12 |
13 | # Click input[name="wd"]
14 | page.click("input[name=\"wd\"]")
15 |
16 | # Fill input[name="wd"]
17 | page.fill("input[name=\"wd\"]", "nba")
18 |
19 | # Press Enter
20 | # with page.expect_navigation(url="https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=nba&fenlei=256&rsv_pq=c4e7c93800022149&rsv_t=51eei5XA6At5rtVRipYK2c1guDYFZrhsJewHdsvB6cVWepemT4sW1L7%2B4Io&rqlang=cn&rsv_enter=1&rsv_dl=ib&rsv_sug3=4&rsv_sug1=3&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&inputT=1108&rsv_sug4=2164"):
21 | with page.expect_navigation():
22 | page.press("input[name=\"wd\"]", "Enter")
23 |
24 | # Close page
25 | page.close()
26 |
27 | # ---------------------
28 | context.close()
29 | browser.close()
30 |
31 | with sync_playwright() as playwright:
32 | run(playwright)
--------------------------------------------------------------------------------
/webkit_test.py:
--------------------------------------------------------------------------------
1 | import time
2 | from playwright.sync_api import sync_playwright
3 |
4 | with sync_playwright() as p:
5 | iphone_12_pro_max = p.devices['iPhone 12 Pro Max']
6 | browser = p.webkit.launch(headless=False)
7 | context = browser.new_context(
8 | **iphone_12_pro_max,
9 | locale='zh-CN',
10 | geolocation={'longitude': 116.39014, 'latitude': 39.913904},
11 | permissions=['geolocation']
12 | )
13 | page = context.new_page()
14 | page.goto('https://amap.com')
15 | page.wait_for_load_state(state='networkidle')
16 | page.screenshot(path='location-iphone.png')
17 | time.sleep(10)
18 | browser.close()
19 |
--------------------------------------------------------------------------------
/webkit_test2.py:
--------------------------------------------------------------------------------
1 | import time
2 | from playwright.sync_api import sync_playwright
3 |
4 | with sync_playwright() as p:
5 | iphone_12_pro_max = p.devices['iPhone 12 Pro Max']
6 | browser = p.webkit.launch(headless=False)
7 | context = browser.new_context(
8 | **iphone_12_pro_max,
9 | locale='zh-CN',
10 | )
11 | page = context.new_page()
12 | page.goto('https://www.whatismybrowser.com/')
13 | page.wait_for_load_state(state='networkidle')
14 | page.screenshot(path='browser-info.png')
15 | time.sleep(10)
16 | browser.close()
17 |
--------------------------------------------------------------------------------