当前位置: 首页 > wzjs >正文

广州工作室做网站html5做网站导航页

广州工作室做网站,html5做网站导航页,网站公告建设方案,framer网页界面设计1. 常用工具简介及对比主流网页自动化工具对比工具支持语言浏览器支持特点适用场景PlaywrightPython, JS, .NETChromium, Firefox, WebKit跨浏览器、速度快、API简洁自动化测试、爬虫、网页操作Selenium多语言所有主流浏览器历史悠久、社区大传统自动化测试、兼容性测试Puppete…

1. 常用工具简介及对比

主流网页自动化工具对比

工具支持语言浏览器支持特点适用场景
PlaywrightPython, JS, .NETChromium, Firefox, WebKit跨浏览器、速度快、API简洁自动化测试、爬虫、网页操作
Selenium多语言所有主流浏览器历史悠久、社区大传统自动化测试、兼容性测试
PuppeteerJavaScriptChromiumChrome官方工具、性能好Chrome相关开发、爬虫
CypressJavaScriptChromium, Firefox专注于测试、内置断言库前端测试

Playwright优势

  • 支持所有现代浏览器

  • 自动等待机制完善

  • 可以拦截修改网络请求

  • 提供设备模拟功能

  • 支持移动端网页测试

2. 安装及自动生成代码

安装步骤

# 安装Python包
pip install playwright# 安装浏览器二进制文件
playwright install

自动生成代码

Playwright提供代码生成工具,可以录制操作并生成代码:

# 启动代码生成器
playwright codegen https://example.com

这会打开浏览器窗口和代码编辑器,你的操作会被实时转换为代码。

3. 基本思路及对象介绍

Playwright核心对象

  1. Browser:对应一个浏览器实例

  2. BrowserContext:独立的会话上下文(类似隐身模式)

  3. Page:单个标签页或弹出窗口

  4. Frame:页面中的iframe

  5. Locator:元素定位器

基本工作流程

  1. 启动浏览器

  2. 创建页面

  3. 导航到目标URL

  4. 定位页面元素

  5. 执行操作

  6. 提取数据

  7. 关闭浏览器

4. 打开浏览器

基本启动方式

from playwright.sync_api import sync_playwrightwith sync_playwright() as p:# 启动Chromium浏览器(显示界面)browser = p.chromium.launch(headless=False)# 创建新页面page = browser.new_page()# 在这里添加操作代码# 关闭浏览器browser.close()

不同浏览器启动

# Firefox
browser = p.firefox.launch()# WebKit (Safari的渲染引擎)
browser = p.webkit.launch()

浏览器配置选项

browser = p.chromium.launch(headless=False,  # 显示浏览器窗口slow_mo=1000,    # 操作间延迟(毫秒),方便观察args=["--start-maximized"],  # 启动参数channel="chrome"  # 使用Chrome而非Chromium
)

5. 访问、等待、定位

访问页面

# 基本访问
page.goto("https://example.com")# 带选项的访问
page.goto("https://example.com", timeout=10000, wait_until="networkidle")

等待策略

# 等待元素出现
page.wait_for_selector(".result")# 等待导航完成
page.click("a.link")
page.wait_for_url("**/target-page")# 等待函数返回True
page.wait_for_function("document.readyState === 'complete'")# 隐式等待(Playwright自动处理)

元素定位

推荐使用新的定位器API:

# 通过文本定位
page.get_by_text("Submit").click()# 通过角色定位
page.get_by_role("button", name="Sign in").click()# 通过标签文本定位
page.get_by_label("Username").fill("admin")# 通过占位文本定位
page.get_by_placeholder("Enter your email").fill("test@example.com")# 传统CSS/XPath选择器
page.locator("button#submit").click()
page.locator("xpath=//button[@id='submit']").click()

6. 动作

基本交互

# 点击
page.get_by_text("Click me").click()
page.get_by_role("button").click(button="right")  # 右键点击# 输入
page.get_by_label("Username").fill("admin")
page.get_by_label("Password").fill("password")# 键盘操作
page.get_by_label("Search").press("Enter")# 鼠标移动
page.get_by_text("Menu").hover()# 拖放
page.locator("#item").drag_to(page.locator("#target"))

表单操作

# 选择单选按钮
page.get_by_label("Agree").check()# 选择复选框
page.get_by_label("Subscribe").set_checked(True)# 选择下拉选项
page.get_by_label("Country").select_option("China")# 上传文件
page.get_by_label("Upload file").set_input_files("myfile.pdf")# 日期选择
page.get_by_label("Birthday").fill("1990-01-01")

7. 内容解析

获取文本内容

# 获取单个元素文本
title = page.locator("h1").text_content()# 获取多个元素文本
items = page.locator(".item").all()
for item in items:print(item.text_content())

获取属性

# 获取属性值
href = page.locator("a").get_attribute("href")# 获取输入框值
value = page.locator("input").input_value()

获取HTML和截图

# 获取整个页面HTML
html = page.content()# 获取元素内部HTML
inner_html = page.locator("div.container").inner_html()# 截图
page.screenshot(path="screenshot.png")# 元素截图
page.locator(".header").screenshot(path="header.png")

执行JavaScript获取数据

# 执行JavaScript获取数据
data = page.evaluate("""() => {return {title: document.title,width: window.innerWidth}
}""")
print(data["title"])

8. 案例

案例1:自动登录并截图

from playwright.sync_api import sync_playwrightdef auto_login():with sync_playwright() as p:browser = p.chromium.launch(headless=False)page = browser.new_page()# 访问登录页page.goto("https://example.com/login")# 填写登录表单page.get_by_label("Username").fill("testuser")page.get_by_label("Password").fill("password123")page.get_by_role("button", name="Login").click()# 等待登录成功page.wait_for_url("**/dashboard")# 截图保存page.screenshot(path="dashboard.png")# 获取欢迎信息welcome = page.get_by_text("Welcome,").text_content()print(welcome)browser.close()auto_login()

案例2:爬取商品列表

from playwright.sync_api import sync_playwright
import csvdef scrape_products():with sync_playwright() as p:browser = p.chromium.launch()page = browser.new_page()page.goto("https://example.com/products")products = []# 获取所有商品元素items = page.locator(".product-item").all()for item in items:product = {"name": item.locator(".product-name").text_content(),"price": item.locator(".price").text_content(),"link": item.locator("a").get_attribute("href")}products.append(product)# 保存到CSVwith open("products.csv", "w", newline="", encoding="utf-8") as f:writer = csv.DictWriter(f, fieldnames=["name", "price", "link"])writer.writeheader()writer.writerows(products)browser.close()scrape_products()

案例3:处理动态加载内容

from playwright.sync_api import sync_playwright
import timedef scrape_infinite_scroll():with sync_playwright() as p:browser = p.chromium.launch()page = browser.new_page()page.goto("https://example.com/infinite-scroll")# 获取初始项目数items = page.locator(".item")last_count = items.count()while True:# 滚动到底部page.evaluate("window.scrollTo(0, document.body.scrollHeight)")# 等待新内容加载time.sleep(2)  # 简单等待,实际项目应该用wait_for_selector# 检查是否加载了新内容new_count = items.count()if new_count == last_count:break  # 没有新内容了last_count = new_count# 提取所有内容all_items = items.all()for item in all_items:print(item.text_content())browser.close()scrape_infinite_scroll()

案例4:下载文件

from playwright.sync_api import sync_playwrightdef download_file():with sync_playwright() as p:browser = p.chromium.launch()page = browser.new_page()# 监听下载事件with page.expect_download() as download_info:page.goto("https://example.com/download")page.click("#download-button")download = download_info.valueprint(f"Downloading: {download.url}")# 保存文件path = download.path()download.save_as("downloaded_file.pdf")print(f"File saved to: {path}")browser.close()download_file()

这些案例展示了Playwright在网页自动化中的常见应用场景。根据实际需求,你可以组合这些基本操作来实现更复杂的自动化任务。


文章转载自:

http://jt1fFkZd.zjrnq.cn
http://OZHWOyIz.zjrnq.cn
http://tI5qoUmC.zjrnq.cn
http://ZUL7SSrv.zjrnq.cn
http://bynrn3X4.zjrnq.cn
http://dhM1FFIb.zjrnq.cn
http://kj6Zk8Rf.zjrnq.cn
http://axblmaVV.zjrnq.cn
http://LEvNyLJf.zjrnq.cn
http://NPLAOSmJ.zjrnq.cn
http://JCC4jtBP.zjrnq.cn
http://uKPiiH22.zjrnq.cn
http://8to23hgd.zjrnq.cn
http://L8oghJmC.zjrnq.cn
http://I37w2g1M.zjrnq.cn
http://8QCcGR4z.zjrnq.cn
http://IdJEs0zo.zjrnq.cn
http://Op8dvVw1.zjrnq.cn
http://C3eRa1EI.zjrnq.cn
http://THfakQox.zjrnq.cn
http://Vxt6gAKW.zjrnq.cn
http://Ik6qlqew.zjrnq.cn
http://iVTlZCjT.zjrnq.cn
http://zObjmIYo.zjrnq.cn
http://2Kzoy1bG.zjrnq.cn
http://3BRhCZPZ.zjrnq.cn
http://is1EcJu8.zjrnq.cn
http://Zv5XvDEd.zjrnq.cn
http://sz4I2dfu.zjrnq.cn
http://1uCjzgJe.zjrnq.cn
http://www.dtcms.com/wzjs/777796.html

相关文章:

  • 宿迁住房和城乡建设网站深圳网站备案拍照
  • 福建漳州东山建设局网站一个商务宣传怎么做网站合适
  • 成都做营销型网站建设乌拉圭网站后缀
  • 外贸网站源码怎么建专业做网带
  • 文件外链网站浙江网站建设网
  • 网站首页做很多个关键词proxy网页在线代理
  • 南宁有做网站的公司吗永久免费的连外网的软件
  • 网站后台培训学校加盟网网站建设
  • 好网站建设公司有哪些拼多多无货源电商怎么做
  • 哪里做网站比较快pcc购物平台
  • 大学生网站建设策划书范文县区社保经办网站建设
  • 昆明城乡建设局网站制作网站公司哪里好
  • 网站建设源码包做网站要不要学ps
  • 奉贤网站建设公司wamp wordpress 安装
  • 电脑软件下载官方网站在哪里可以建网站
  • 网站方案书个人网站做淘宝客容易封吗
  • 杭州网站优化排名揭秘低价网站建设危害
  • IT男为女朋友做的求婚网站免费制作一个自己的网站吗
  • 移动网站 用户体验公司logo设计免费
  • 郑州做网站哪家便宜大连网站的优化
  • 黄岐建网站网站开发引用思源黑体
  • 网站建设费 科目3d建模游戏
  • 泰安网站推广公司网站设计与开发
  • dedecms做电商网站wordpress重新生成永久链接
  • 域名和网址的区别seo优化工作内容做什么
  • led的网站建设未备案域名
  • 德州商城网站建设用html做登录网站
  • 网站开发有前景吗wordpress 后台插件
  • 网站建设品牌排行榜黄山网站建设找哪家
  • 北京网站建设 fim用php写的网站