python playwright之元素定位示例详解
作者:莫离 发布时间:2023-06-14 01:08:41
定位篇
UI 自动化很多时候的苦恼都是定位不到,其实说实话我到现在有时候也是莫名其妙的定位到或者定位不到。好在这个框架定位方式的上限非常以及特别的高,这就像人有钱和没钱的区别主要在于选择权一样,有选择的人生才是幸福的。出门想开法拉利就开法拉利,想开拖拉机就开拖拉机。
定位的详细介绍
1、官方是不推荐 xpath 和 css 的,原话意思是 CSS 和 XPATH 是绑定于 DOM 上的,当 DOM 结构出现更改他们将失效。
2、文本内容,输入框内的 placeholder,labels 等这些我们可以理解成面向业务的属性这些反而不那么容易改变所以定位应该尽量的去面向业务。
文本选择器定位
下文这样是一个基础的文本定位 特点有
1、模糊匹配
2、不缺分英文的大小写
3、如果存在多个会报错
page.locator("text=社区").click()
也可以使用简写的方式,注意其中的单引号
page.locator("'Log in'").click()
比较精准的方式,点击 id=main-nav-menu 包含的元素里文本='社区'的元素,这里使用了 text() 伪类
page.locator("#main-nav-menu :text('社区')").click()
结合 CSS 使用,仅匹配 article 元素
page.locator('article:has-text("All products")').click()
CSS 选择器定位
点击 button 按钮
page.locator("button").click()
通过属性定位,点击属性中存在 href="/topics"的元素
page.locator('[href="/topics" rel="external nofollow" rel="external nofollow" ]').click()
通过属性精准定位:点击 ID=nav-bar 元素下的 href="/topics"的元素
page.locator('#main-nav-menu [href="/topics" rel="external nofollow" rel="external nofollow" ]').click()
通过 placeholder 定位以及输入
page.locator('[placeholder="搜索"]').fill('电子校的故事')
布局定位结合 CSS,也是我最喜欢的
page.locator("input:right-of(:text('开源项目'))").fill('电子校的故事')
非常的实用,尤其是在我们经常测的管理系统里边 dialog 里,只要左侧的 label 不变~ 代码就不用改
解释下上边这段代码,大家一边看代码一边把头往显示器的右上偏左侧看下。
定位的的呢是一个 Input,一个在文本为'开源项目'右侧的 input。
同理这里可以使用:right-of、:left-of、:above、:below、:near 这几种布局定位的方式
根据元素可用
点击一个可用的 button
page.locator("button:visible").click()
page.locator("button >> visible=true").click()
继续说说属性
点击一个按钮,它的文本包含了 Click me。另这里也可使用正则表达式
page.locator("button", has_text="Click me").click()
来源:https://testerhome.com/topics/33720
猜你喜欢
- Sys.path 指定用于模块搜索路径的字符串列表也可以通过sys模块的append方法在Python环境中增加搜索路径。Sys.path.
- Python是一种解释型、面向对象、动态数据类型的高级程序设计语言,本文就举一例Python类继承的实例。实例代码如下:#! /usr/bi
- 文件对象提供了 read() 方法来按字节或字符读取文件内容,到底是读取宇节还是字符,则取决于是否使用了 b 模式,如果使用了 b 模式,则
- Django 提供内置的视图(view)函数用于处理登录和退出 (以及其他奇技淫巧),但在开始前,我们来看看如何手工登录和退出。 Djang
- 通过python的os模块获取windows或者linux主机名的通用函数。#!/usr/bin/env python #cod
- 想使用正则表达式来获取一段文本中的任意字符,写出如下匹配规则: (.*) 结果运行之后才发现,无法获得换行之后的文本。于是查了一下手册,才发
- 如何在php中判断一个网页请求是ajax请求还是普通请求?你可以通过传递参数的方法来实现,例如使用如下网址请求:/path/to/pkphp
- 在写ASP网页时常用的检测代码:服务器现在时间:<% =now %>服务器CPU型号:<%=Request.ServerV
- 触发器权限和所有权CREATE TRIGGER 权限默认授予定义触发器的表所有者、sysadmin 固定服务器角色成员以及 db_owner
- print函数的功能是打印图窗或保存为特定文件格式。语法print(filename,formattype)print(filename,f
- 共有三种推导式列表(list)推导式字典(dict)推导式集合(set)推导式列表推导式基本语法:[out_express for out_
- 本文实例为大家分享了Tensorflow实现卷积神经网络的具体代码,供大家参考,具体内容如下1.概述定义:卷积神经网络(Convolutio
- 我们来编写一个,引用时用:<!--#include Virtual="page.inc"-->语句即可:pa
- W3C 发布 XPath 1.0 规范是在 1999 年,那时我还正在备战高考,不料十年后,我才开始学习XPath,落后的差距不是一般的大(
- 很多网站注册时都会要求输入电子邮箱,其应用场景是比较广的,例如注册账号接收验证码、注册成功通知、登录通知、找回密码验证通知等。本文将介绍如何
- 具体代码如下所示:import numpy as npfrom matplotlib import pyplot as pltfrom sc
- 这个程序将记数器的数字放在ACCESS数据库中,当然你也能用你希望其它的ODBC数据源.这个程序从URL中读取记数信息.如下:< IM
- 问:怎样才能取得局域网中所有SQL Server的实例?答:请参考以下的具体步骤:SmoApplication.EnumAvailableS
- 如何做一个自己的QQ?这不是什么新鲜的东西,看看代码:refresh.htm<HTML><HEAD><titl
- Anaconda 是一个旗舰版的python安装包, 因为普通的python没有库, 如果需要安装一些重要的库, 要经常一个一个下载,会非常