73 lines
2.7 KiB
Python
73 lines
2.7 KiB
Python
#!/usr/bin/env python3
|
|
"""测试通过点击分页按钮翻页"""
|
|
from playwright.sync_api import sync_playwright
|
|
from bs4 import BeautifulSoup
|
|
import re
|
|
|
|
def test_click_pagination(menu_id=7):
|
|
with sync_playwright() as p:
|
|
browser = p.chromium.launch(headless=True)
|
|
page = browser.new_page(viewport={'width': 1920, 'height': 1080})
|
|
|
|
url = f"https://niaodaifu.cn/health-information?menu_id={menu_id}"
|
|
print(f"[打开] {url}")
|
|
page.goto(url, wait_until='networkidle', timeout=30000)
|
|
page.wait_for_timeout(3000)
|
|
|
|
def get_article_ids():
|
|
soup = BeautifulSoup(page.content(), 'html.parser')
|
|
ids = []
|
|
for m in soup.find_all('div', class_='media'):
|
|
a = m.find('a', class_='media-heading')
|
|
if a:
|
|
href = a.get('href', '')
|
|
match = re.search(r'article_id=(\d+)', href)
|
|
if match:
|
|
ids.append(match.group(1))
|
|
return ids
|
|
|
|
ids1 = get_article_ids()
|
|
print(f"第1页 article_ids: {ids1}")
|
|
|
|
# 查找下一页按钮
|
|
print("\n[分页按钮信息]")
|
|
next_btn = page.query_selector('button.btn-next')
|
|
if next_btn:
|
|
print(f" 找到下一页按钮: {next_btn.get_attribute('class')}")
|
|
print(f" 是否禁用: {next_btn.get_attribute('disabled')}")
|
|
else:
|
|
print(" 未找到 button.btn-next")
|
|
|
|
# 查找所有页码按钮
|
|
pager_btns = page.query_selector_all('.el-pager li')
|
|
print(f" 页码按钮数量: {len(pager_btns)}")
|
|
for btn in pager_btns:
|
|
print(f" - class={btn.get_attribute('class')} text={btn.text_content()}")
|
|
|
|
# 点击第2页
|
|
if pager_btns and len(pager_btns) >= 2:
|
|
print("\n[点击第2页]")
|
|
pager_btns[1].click()
|
|
page.wait_for_timeout(3000)
|
|
ids2 = get_article_ids()
|
|
print(f"第2页 article_ids: {ids2}")
|
|
if ids2 != ids1:
|
|
print("*** 点击分页成功!内容不同 ***")
|
|
else:
|
|
print("!!! 点击后内容未变 !!!")
|
|
elif next_btn:
|
|
print("\n[点击下一页按钮]")
|
|
next_btn.click()
|
|
page.wait_for_timeout(3000)
|
|
ids2 = get_article_ids()
|
|
print(f"第2页 article_ids: {ids2}")
|
|
if ids2 != ids1:
|
|
print("*** 点击下一页成功!内容不同 ***")
|
|
else:
|
|
print("!!! 点击后内容未变 !!!")
|
|
|
|
browser.close()
|
|
|
|
if __name__ == '__main__':
|
|
test_click_pagination()
|