首页 > 其他分享 >Playwrigh

Playwrigh

时间:2024-10-24 17:21:06浏览次数:6  
标签:Playwright 浏览器 get text 元素 Playwrigh page

Playwrigh


文章目录


前言

Playwright是由Microsoft开发的一款开源的自动化测试工具,首次开源于2020年1月,主要用于对Web应用进行UI自动化测试。


一、Playwrigh用途

1.用途

1.1 功能定位:Playwright是一个端到端的测试工具,允许开发者创建跨浏览器和跨平台的自动化测试脚本。
1.2 支持浏览器:Playwright支持所有现代渲染引擎,包括Chromium(Chrome、Edge)、Firefox和WebKit(Safari),可以在不同浏览器中执行自动化测试。
1.3 跨平台能力:Playwright能够在Windows、Linux和macOS上运行,实现跨平台测试。
1.4 编程语言支持:Playwright支持多种编程语言,包括JavaScript/TypeScript、Python、Java、.NET等,开发者可以根据自己的喜好和项目需求选择合适的语言。

2.配置与安装(python环境结合浏览器例子,工具pycharm和谷歌浏览器)

2.1 安装Playwright库:
对于Python环境,可以使用pip命令安装Playwright依赖库。

pip install playwright

2.2 安装浏览器驱动文件:
在安装Playwright库后,需要安装Chromium、Firefox、WebKit等浏览器的驱动文件。这通常可以通过Playwright提供的命令行工具来完成。

python -m playwright install

2.3 打开已有浏览器(详情见上博客)

cd D:\Program Files\Google\Chrome\Application && chrome.exe --remote-debugging-port=1262 --user-data-dir="D:\playwright\user_data"

3.函数介绍

3.1 get_by_label函数
方法通过关联标签的文本查找表单控件。这通常用于定位具有特定

<label for="password-input">Password:</label>  
<input id="password-input" type="password">

可以使用page.get_by_label()方法定位到“Password:”标签对应的输入框,并填写密码:可以使用page.get_by_label()方法定位到“Password:”标签对应的输入框,并填写密码:

page.get_by_label("Password").fill("secret")
# Time input
page.get_by_label("Appointment time").fill("13:15")

# Local datetime input
page.get_by_label("Local time").fill("2020-03-02T05:15")

3.2 get_by_role函数
方法通过显式和隐式可访问性属性进行定位。它根据元素的角色(role)来查找元素,这些角色通常由ARIA属性(如role属性)或HTML元素的隐式角色定义。这种方法反映了用户和辅助技术(如屏幕阅读器)如何感知页面,因此非常适合用于提高网页的可访问性。
3.2.1 假设有以下HTML代码:role是按钮属性

<button role="button" aria-label="Sign in">Sign In</button>

可以使用page.get_by_role()方法定位到按钮,并执行点击操作:

page.get_by_role("button", name="Sign in").click()

3.2.2 假设有以下HTML代码:role是复选框属性

<input type="checkbox" role="checkbox" aria-label="Subscribe" id="subscribe-checkbox">  
page.get_by_role("checkbox", name="Subscribe").check()

3.3 get_by_text函数
是一个用于定位页面元素的方法。该方法通过查找与给定文本内容相匹配的元素来定位页面上的一个或多个元素。
参数:

text:这是该方法的主要参数,用于指定要定位的元素的文本内容。
exact(可选):这是一个布尔值参数,用于指定是否进行精确匹配。如果设置为 True,则只有与给定文本完全匹配的元素才会被定位。如果设置为 False 或省略,则可能会定位到包含给定文本内容的部分匹配元素。

例子:如果页面上有多个元素包含“提交”文本,但你想要定位并操作第一个精确匹配的元素,你可以使用 exact=True 参数:

page.get_by_text('提交', exact=True).click()

3.4 其他函数
浏览器启动相关:
playwright.chromium.launch(): 启动Chromium浏览器实例。
playwright.firefox.launch(): 启动Firefox浏览器实例。
playwright.webkit.launch(): 启动WebKit浏览器实例。
页面操作相关:
browser.newPage(): 在浏览器中打开一个新页面。
page.goto(url): 转到指定的URL。
page.waitForSelector(selector): 等待页面上匹配指定选择器的元素出现。
page.click(selector): 单击匹配指定选择器的元素。
page.type(selector, text): 在匹配指定选择器的输入字段中输入文本。
page.evaluate(expression): 在页面上下文中执行指定的JavaScript表达式。
page.screenshot(options): 截取页面的屏幕截图。
page.waitForNavigation(): 等待页面完成导航。
page.close(): 关闭当前页面。
page.get_by_placeholder(placeholder): 根据元素的占位符文本定位输入字段。例如,page.get_by_placeholder(“Enter email”)可以定位到一个占位符为“Enter email”的输入框。
page.locator(“xpath=expression”): 使用XPath表达式定位元素。例如,page.locator(“xpath=//button[@type=‘submit’]”)可以定位到一个类型为“submit”的按钮。

3.5 其他的看官方文档

二、浏览器已开页面和Playwright结合

1.引入库

代码如下(示例):

from playwright.sync_api import Playwright, sync_playwright
import re
import time

2.内容

 	browser = playwright.chromium.connect_over_cdp("http://localhost:1355")
    default_context = browser.contexts[0]
    page = default_context.pages[0]
    print(page)
    global count
    count = 1
    # page1.get_by_role("link", name="......").click()
    with page.expect_popup() as page1_info:
        page.get_by_title(".......").click()
    page1 = page1_info.value

    time.sleep(1)

    while(count>=1):
        try:
            page1.locator("li").filter(has_text="处理").click()
            page1.get_by_role("button", name="刷新").click()
            page1.get_by_role("button", name="筛选").click()
            try:
                all_elements = page1.query_selector_all("text=王调")
            except:
                count=all_elements.count()
                print("处理的为:"+count)
                page1.close()
                break
            for element in all_elements:
                count=count+1
                element.click()
                time.sleep(1)

                elements = page1.query_selector_all("text=..........")

                # 检查是否找到至少一个匹配的元素
                if elements:
                    # 获取第一个元素的内部文本
                    first_element = elements[0]
                    text_tt = first_element.inner_text()
                    parts = text_tt.split(',')

                    # 取第二个部分(即逗号后面的部分)
                    second_part = parts[1]

                    # 再次分割第二部分,以短横线(-)为分隔符
                    name_parts = second_part.split('-')

                    # 取第一个名字(即第二个短横线前面的部分)
                    person_name = name_parts[0]

                    # 输出结果
                    print(person_name)

                else:
                    print("未找到匹配的元素")
                    # print(text_tt)
                # # 分割字符串为列表,以逗号为分隔符
					#后面写自己需要的内容

        except Exception as e:
            print(f"Error processing row {index}: {e}")
            continue

三、代码生成库

playwright codegen 

在这里插入图片描述

注意

提示:若通过这个方式不能找到元素,可以使用找他的上一层。

标签:Playwright,浏览器,get,text,元素,Playwrigh,page
From: https://blog.csdn.net/m0_46382869/article/details/143199221

相关文章

  • Playwright 源码 启动 Chromium 的命令
    问:Playwright无声无息地启动了Chromium,到底底层执行了个啥子?带着问题,开启探险之旅!!!......
  • 探索Playwright:前端自动化测试的新纪元
    作者:京东保险张新磊背景在前端开发中,自动化测试是确保软件质量和用户体验的关键环节。随着Web应用的复杂性不断增加,手动测试已经无法满足快速迭代和持续交付的需求。自动化测试通过模拟用户与应用的交互,能够高效地执行重复性测试任务,加快测试周期,提升测试覆盖率,从而更早地发......
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-3-启动浏览器(详细教程)
    1.简介 通过前边两篇文章跟随宏哥学习想必到这里已经将环境搭建好了,今天就在Java项目搭建环境中简单地实践一下: 启动两大浏览器。按市场份额来说,全球前三大浏览器是:IE.Firefox.Chrome。但是微软已经在Win10中不维护IE浏览器了,用Edge浏览器代替或者兼容IE模式的浏览器,因此宏哥这......
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-2-环境准备与搭建-基于Maven(详细
    1.简介上一篇宏哥已经讲解和分享了如何通过引入jar包来搭建Java+Playwright自动化测试环境,这一种是比较老的方法,说白了就是过时的老古董,但是我们必须了解和知道,其实maven搭建无非也就是下载引入相关的jar包,只不过相比之下是简单方便了,了解其本质可以帮助我们更好的学习maven搭建......
  • 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-2-环境准备与搭建-基于Maven(详细
    1.简介上一篇宏哥已经讲解和分享了如何通过引入jar包来搭建Java+Playwright自动化测试环境,这一种是比较老的方法,说白了就是过时的老古董,但是我们必须了解和知道,其实maven搭建无非也就是下载引入相关的jar包,只不过相比之下是简单方便了,了解其本质可以帮助我们更好的学习maven搭建......
  • ubuntu20 运行playwright
    步骤pipinstallplaywrightplaywrightinstallplaywrightinstall-deps若弹出这个参考:https://www.cnblogs.com/code3/p/18458533解决tip但是貌似有2s的延迟。。......
  • playwright自动登录获取cookie/ck
    有些登录逆向起来比较麻烦,就用了自动化importtimeimportjsonimportrandomfromplaywright.sync_apiimportPlaywright,sync_playwright,expect#https://xxxx.edu.cn/appportalweb/seatspace/"""需要提前10分钟获取ck"""defrun(playwright:Playwright)......
  • PlayWright检测用户登录保存Cookie
    背景本需求以稀土掘金社区为例采用PlayWright包pipinstallplaywright思路用户打开软件,提示进入浏览器登录后进行操作将expect_response()的超时时间设置为无限毫秒expect_response()函数就是等待指定响应发生的方法通过手动抓包发现掘金社区登陆成功后响应返回接口地......
  • [Python数据采集]Playwright爬虫数据采集代码示例!!值得深入学习代码
    【Playwright爬虫数据采集代码示例!!值得深入学习代码】为了提高反爬虫的稳定性,代理池和模拟真实用户行为是常见的优化手段。以下我将给出代理池的实现方式,并结合模拟真实用户行为的代码示例。1.代理池实现:通过代理池,可以定期切换IP,避免因同一个IP频繁请求而被封锁。代理池可......
  • [Python数据采集]Playwright-新一代数据采集神器入门(一)
    Playwright是由Microsoft维护的一个开源自动化框架,用于跨浏览器的Web应用程序测试和数据采集。与Selenium类似,它允许开发者控制网页浏览器进行自动化任务,但Playwright提供了更现代化的功能和更高的效率,尤其在处理复杂的网页时表现出色。Playwright的核心特性跨浏......