首页 > 其他分享 >使用 Playwright 进行元素定位

使用 Playwright 进行元素定位

时间:2024-05-12 10:30:06浏览次数:23  
标签:__ 定位 playwright text 元素 Playwright page

前言

在自动化测试和网页爬取中,定位页面元素是一项重要的任务。Playwright 提供了多种方式来定位页面元素,包括通过 CSS 选择器、XPath 和文本内容等。在本文中,我们将介绍如何使用 Playwright 进行元素定位。

CSS 选择器定位元素

使用 CSS 选择器是一种常见且灵活的方式来定位页面元素。Playwright 提供了 locator 对象,可以通过 locator.query_selector() 方法来使用 CSS 选择器定位元素。以下是一个示例:

from playwright.sync_api import sync_playwright

def main():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page()
        page.goto('https://example.com')
        element = page.locator('h1')
        print("Element text:", element.text())
        browser.close()

if __name__ == "__main__":
    main()

在这个示例中,我们使用 CSS 选择器'h1'定位页面中的标题元素。然后,我们使用 element.text() 方法获取元素的文本内容并打印输出。

使用 XPath 定位元素

XPath 是另一种常用的定位页面元素的方式,特别适用于复杂的页面结构。Playwright 也支持使用 XPath 来定位元素。以下是一个示例:

from playwright.sync_api import sync_playwright

def main():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page()
        page.goto('https://example.com')
        element = page.locator('//h1')
        print("Element text:", element.text())
        browser.close()

if __name__ == "__main__":
    main()

在这个示例中,我们使用 XPath 表达式 '//h1' 定位页面中的标题元素。然后,我们同样使用 element.text() 方法获取元素的文本内容并打印输出。

文本内容定位元素

有时候,我们可能需要根据元素的文本内容来定位元素。Playwright 提供了 locator 对象的 with_text() 方法来实现这一功能。以下是一个示例:

from playwright.sync_api import sync_playwright

def main():
    with sync_playwright() as p:
        browser = p.chromium.launch()
        page = browser.new_page()
        page.goto('https://example.com')
        element = page.locator('text="Example Domain"')
        print("Element text:", element.text())
        browser.close()

if __name__ == "__main__":
    main()

在这个示例中,我们使用 text="Example Domain" 来定位文本内容为 "Example Domain" 的元素。然后,我们同样使用 element.text() 方法获取元素的文本内容并打印输出。

注:

  • text=xxxx 没有加引号(单引号或者双引号),模糊匹配,对大小写不敏感
  • text='xxxx' 有引号,精确匹配,对大小写敏感

使用示例,比如点击百度首页上的“新闻” 文本,我们可以看到“新闻”是一个a标签

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.chromium.launch(headless=False, slow_mo=1000)
    page = browser.new_page()
    page.goto("https://www.baidu.com")
    print(page.title())
    page.click('text=新闻')
    page.wait_for_timeout(5000)
    browser.close()

其他定位方法

playwright还提供了其他内置的定位方法,常用的如下:

  • page.get_by_role()通过显式和隐式可访问性属性进行定位
  • page.get_by_text()通过文本内容定位
  • page.get_by_label()通过关联标签的文本定位表单控件
  • page.get_by_placeholder()按占位符定位输入
  • page.get_by_alt_text()通过替代文本定位元素,通常是图像
  • page.get_by_title()通过标题属性定位元素
  • page.get_by_test_id()根据data-testid属性定位元素(可以配置其他属性)

使用示例

page.get_by_label("User Name").fill("muller")
page.get_by_label("Password").fill("secret-password")
page.get_by_role("button", name="Sign in").click()
expect(page.get_by_text("Welcome, muller!")).to_be_visible()

总结

本篇文章主要介绍了playwright的定位方式,playwright支持CSS和xpath这两种最常用的定位方式,还有部分内置的定位方式。后续我们将介绍playwright对元素操作的方法。

标签:__,定位,playwright,text,元素,Playwright,page
From: https://www.cnblogs.com/hogwarts/p/18187559

相关文章

  • playwright使用:启动浏览器与多种运行方式
    前言在本文中,我们将介绍如何使用Playwright这一现代化的浏览器自动化工具来启动浏览器,并深入了解其运行方式。Playwright是一个功能强大的工具,可以帮助开发人员自动化测试、网页截图、信息提取等任务。它支持多种浏览器,包括Chrome、Firefox和WebKit。启动浏览器上一篇文章中,我......
  • Playwright安装与Python集成:探索跨浏览器测试的奇妙世界
    前言web自动化测试是我们工作中的重要一环,随着Web应用程序和网站的复杂性不断增加,跨浏览器测试变得越来越必要。而Playwright作为一种新兴的跨浏览器测试工具,为开发人员提供了一种轻松愉快的方式来进行自动化测试。本文将带您深入探索Playwright的安装过程,并结合Python语言,揭示......
  • 代码随想录训练营第三天 | 203.移处链表元素 707.设计链表 206.反转链表
    203.移除链表元素题目链接https://leetcode.cn/problems/remove-linked-list-elements/文章讲解https://programmercarl.com/0203.移除链表元素.html#算法公开课视频讲解https://www.bilibili.com/video/BV18B4y1s7R9/?vd_source=2b5b33d3d692b0064daff4e58957fc82tips:对......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-46-鼠标滚轮操作
    1.简介有些网站为了节省流量和资源,提高加载效率,采用的是动态加载(懒加载)的,也就是当拖动页面右侧滚动条后会自动加载网页下面的内容,不拖动就不会加载的或者通过鼠标滚轮操作。2.wheel模拟鼠标滚动wheel模拟鼠标滚动,就是通过调度一个wheel事件。(滚轮事件如果不处理可能会导致滚动,......
  • 差分升级库+卫星定位+乘客流量测量仪
    1、mcu_bsdiff_upgrade-适用于嵌入式单片机的差分升级通用库mcu_bsdiff_upgrade是一款适用于嵌入式单片机的差分升级库,通用所有单片机,如stm32、华大、复旦微、瑞萨等。适合嵌入式的差分升级又叫增量升级,顾名思义就是通过差分算法将源版本与目标版本之间差异的部分提取出来制作......
  • 移动端定位打卡
    签到按钮脚本Mobile_NS.getCurrPosition(function(result){varlngdangq=result["lng"];varlathoum=result["lat"];varminDistance=null;//alert("addr"+addr);vardkzt=$f("dkzt").val();......
  • Selenium4自动化测试3--元素定位By.NAME,By.LINK_TEXT 和通过链接部分文本定位,By.PARTI
    4-通过名称定位,By.NAMEname属性为表单中客户端提交数据的标识,一个网页中name值可能不是唯一的。所以要根据实际情况进行判断 importtimefromseleniumimportwebdriverfromselenium.webdriver.common.byimportBy#指定浏览器的位置,解决浏览器驱动和浏览器版本不匹配......
  • Selenium4自动化测试4--元素定位By.XPATH,元素定位最佳顺序
    7-通过xpath定位,By.XPATH    xpath是什么?XPath是一门在XML文档中查找信息的语言xml是什么?XML(可扩展标记语言),主要用于传输数据为什么可以使用xpath定位html?XPath(XML路径语言)是一种用于在XML文档中定位元素的语言,它可以用于定位HTML文档中的元素。尽管XML和HTML是两种不同......
  • 347. 前 K 个高频元素
    给你一个整数数组nums和一个整数k,请你返回其中出现频率前k高的元素。你可以按任意顺序返回答案。示例1:输入:nums=[1,1,1,2,2,3],k=2输出:[1,2]示例2:输入:nums=[1],k=1输出:[1]classSolution{public:vector<int>topKFrequent(vector<int......
  • 代码随想录算法训练营第第二天 | 977.有序数组的平方 、27. 移除元素
    977.有序数组的平方题目建议:本题关键在于理解双指针思想题目链接:https://leetcode.cn/problems/squares-of-a-sorted-array/文章讲解:https://programmercarl.com/0977.有序数组的平方.html视频讲解:https://www.bilibili.com/video/BV1QB4y1D7ep/***@param{number[]}nu......