Python写UI自动化--playwright(元素定位)

本篇详细分享playwright如何进行打断点、元素定位、填写输入框、点击等操作

目录

一、PyCharm打断点进行调试

二、浏览器开发者模式检查元素

三、通过CSS或XPath进行定位

四、输入框输入文本操作

五、点击操作

总结


一、PyCharm打断点进行调试

如图所示,我们在page.goto创建新页面并导航后打了断点,再运行debug调试

程序会在运行完page.goto("https://www.baidu.com")这句代码后暂停,我们可以看到在有头模式下会弹出谷歌浏览器导航窗口,百度界面。

二、浏览器开发者模式检查元素

在弹出的浏览器导航窗口中单机鼠标右键--选择检查

 

就会弹出浏览器的开发者界面,点击红框处我们可以设置这个界面的位置靠左靠右或者靠下

点击所标示的箭头就可以在页面中选择一个元素进行检查,比如我们选择百度输入框进行检查:

三、通过CSS或XPath进行定位

我们可以通过如上图输入框标签的属性值,如input中的 id="kw"   name="wd",去对百度输入框元素进行定位。比如我们通过CSS Selector定位,按ctrl+f会在开发者工具的顶部或者底部弹出一个搜索框,我们输入#kw,可以看到能搜到百度输入框:

也可以通过XPath定位,同上述方法在搜索框输入//input[@name='wd'],也能搜到百度搜索框且是唯一的

四、输入框输入文本操作

调试试验步骤三中的定位元素是否有效,用到playwright的两个方法:

page.locator(selector): 创建一个定位器对象,用于查找和操作页面上的元素。selector可以是CSS选择器、XPath等。

page.fill(selector, value[, options]): 在表单输入元素中填充文本。

我们回到pycharm中继续进行调试,在调试框中如下红色框按钮Evaluate Expression 评估表达式,点击红色框按钮会弹出一个Evaluate对话框,我们可以在Expression输入框中输入接下来我们希望运行的代码page.locator('//input[@name="wd"]').fill("搜索"),并点击Evaluate进行实验运行,即按上个步骤通过XPath进行定位,看到运行结果None,没有报错

此时我们再回到浏览器导航窗口,发现界面已经发生变化,搜索框中按我们预设的输入了 “搜索”二字。我们可以将page.locator('//input[@name="wd"]').fill("搜索")这句代码copy到代码主体中使用。

同样我们也可以通过CSS定位 page.locator('#kw').fill("搜索"),结果是一样的,但是建议最好使用在开发者工具搜索框搜到唯一值的方法。

五、点击操作

类似步骤四,用到playwright的模拟点击方法:

page.click(selector[, options]): 在指定的元素上模拟点击操作。

同步骤四一样,我们先在浏览器确定元素定位,再到pycharm进行调试试验代码

经过调试试验点击百度一下搜索按钮后,浏览器显示内容发生变化,同样我们将调试代码copy到代码主体中。

经过上述调试步骤,我们得到完整的代码,实现操作浏览器导航www.baidu.com,在百度搜索框输入”搜索“二字,再点击百度一下按钮进行搜索,最后关闭浏览器:

from playwright.sync_api import sync_playwright
def usage_1():with sync_playwright() as p:#启动谷歌浏览器实例browser = p.chromium.launch(headless=False)page = browser.new_page()page.goto("https://www.baidu.com")# 在搜索框中输入关键词page.locator('//input[@name="wd"]').fill("搜索")# 点击“百度一下”按钮进行搜索page.click("//input[@value='百度一下']")browser.close()usage_1()

总结

该篇文章拆解了playwright的元素定位、输入框输入文本、以及点击操作,结合了pycharm的断点调试、浏览器开发者模式检查元素,用到了以下元素操作方法:

page.locator(selector): 创建一个定位器对象,用于查找和操作页面上的元素。selector可以是CSS选择器、XPath等。
page.click(selector[, options]): 在指定的元素上模拟点击操作。
page.fill(selector, value[, options]): 在表单输入元素中填充文本。

希望大家多多实践~发现问题一起讨论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/26695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RK3568技术笔记 Ubuntu 安装VMware Tools

安装 VMware Tools 后可以直接使用复制粘贴功能拷贝 Ubuntu 系统和 windows 主机内的文件,非常方便。 开启虚拟机,必须要进入ubuntu系统后才能进行下面的步骤。 单击 VMware 软件中的标签“虚拟机”,在下拉的菜单中单击“安装VMware Tools &…

用Python绘制yolo训练结果比较图-论文需要

代码内容来自于网络用博客记录 利用训练生成的result.csv中数据,形成多模型的比较图。 代码中演示的是map50、map50-95、losss的比较图 import matplotlib.pyplot as plt import pandas as pd import numpy as npif __name__ __main__:# 列出待获取数据内容的…

如何通过逆向分析法挖掘真实需求?

逆向分析法从现有问题或现象出发,反向追溯其根本原因,以揭示隐藏需求和潜在问题。此方法有助于深入理解用户的真实需求,提高需求分析质量和效率,优化用户体验,提高用户满意度和忠诚度。如果缺乏逆行分析法,…

MCK主机加固系统——您的数字堡垒

在这个数字化的时代,信息安全如同企业的生命线,而MCK主机加固系统,就是守护这条生命线的坚固堡垒。让我为您揭开这款产品的神秘面纱,带您领略它如何成为企业信息安全的坚强后盾。 主机加固系统——您的数字堡垒 在网络攻击日益猖…

界面控件DevExpress WinForms垂直属性网格组件 - 拥有更灵活的UI选择(一)

DevExpress WinForms垂直&属性网格组件旨在提供UI灵活性,它允许用户显示数据集中的单个行或在其90度倒置网格容器中显示多行数据集。另外,用户可以把它用作一个属性网格,就像在Visual Studio IDE中那样。 P.S:DevExpress Win…

调度系统揭秘(上):调度系统设计思想

前言 在互联网领域中,几乎所有企业需要调度系统,主要原因是企业需要处理大量的数据,并且这些数据需要在不同的系统之间进行传输和处理。一部分是为了满足业务的需要,例如BI决策分析、图表展示、机器学习、数据挖掘;一…

前端项目打包部署

打包 vue-cli脚手架的前端项目,点击npm脚本中的第二条编译命令,即可将项目编译,生成一个dist的文件夹,里面存放的就是编译好的前端项目文件,没有脚手架就在终端敲击npm run build命令编译前端项目 部署 Nginx 介绍:…

linux配置用户

一,安装sudo与确保在管理员用户下 apt update apt install sudo -y 切换用户:密码不会显示,一个个输入然后回车。//图中是zfxt-->Stable用户切换 su root //root为用户名 以其他用户执行命令: su root ping baidu.com //su…

人工智能--制造业和农业

欢迎来到 Papicatch的博客 文章目录 🍉人工智能在制造业中的应用 🍈 应用场景及便利 🍍生产线自动化 🍍质量控制 🍍预测性维护 🍍供应链优化 🍈 技术实现及核心 🍍机器学习和…

【复旦邱锡鹏教授《神经网络与深度学习公开课》笔记】感知器

感知器是一种非常早期的线性分类模型,作为一种简单的神经网络模型被提出。感知器是一种模拟生物神经元行为的机器,有与生物神经元相对应的部件,如权重(突触)、偏置(阈值)及激活函数(…

CobaltStrike权限传递MSF

一、测试环境 操作系统: 1.VMware17 2.kali 6.1.0-kali5-amd64 3.Win10x64 软件: 1.cs4.0 2.metasploit v6.3.4-dev 二、测试思路 1.cs是一款渗透测试工具,但没有漏洞利用的模块,我们可以在拿到目标主机的权限后,将…

高速直线导轨驱动与控制,精准稳定的运动核心元件

直线导轨在工业生产中,精度和稳定性是至关重要的。而在各种机械设备中,高精度直线导轨是提高设备运动控制精度和平稳性的核心部件,当我们考虑高速运动时,直线导轨的精度和稳定性是非常重要的因素。 直线导轨系统中如何确保高速运动…

怎么更快捷的修改图片大小?压缩图片jpg、png、gif的快捷方法

jpg作为最常用的一种图片格式,在遇到图片太大问题时,该如何操作能够快速在压缩图片jpg的大小呢?图片太大无法上传时目前常见的一个使用问题,只有将图片处理到合适的大小才可以正常在平台上传使用,一般情况下想要快速解…

LLM大模型开发的一般流程

何谓大模型开发? 将开发以大语言模型为功能核心、通过大语言模型的强大理解能力和生成能力、结合特殊的数据或业务逻辑来提供独特功能的应用称为大模型开发。 主要功能点: 调用工具prompt engineering数据工程业务逻辑拆分 一般开发流程:…

Perl语言入门学习

引言 Perl是一种功能强大的编程语言,广泛用于文本处理、系统管理和Web开发。它以其灵活性和强大的正则表达式处理能力著称。本篇博客将介绍Perl的基础知识,并通过多个例子帮助初学者快速上手。 1. 安装Perl 在开始学习Perl之前,您需要确保…

Stable diffusion 3 正式开源

6月12日晚,著名开源大模型平台Stability AI正式开源了,文生图片模型Stable Diffusion 3 Medium(以下简称“SD3-M”)权重。 SD3-M有20亿参数,平均生成图片时间在2—10秒左右推理效率非常高,同时对硬件的需求…

贪心+构造,CF1153 C. Serval and Parenthesis Sequence

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 Problem - 1153C - Codeforces 二、解题报告 1、思路分析 对于括号匹配问题我们经典做法是左括号当成1,右括号当成-1 那么只要任意前缀非负且最终总和为0那么该括号序列就是合法 对于本题&…

计算机网络 —— 运输层(TCP三次握手)

计算机网络 —— 运输层(TCP三次握手) 三次握手第一次握手第二次握手第三次握手两次握手行不行? 我们今天来学习TCP的三次握手: 三次握手 TCP三次握手是TCP协议中建立连接的过程,旨在确保双方准备好进行可靠的通信。…

从零开始的<vue2项目脚手架>搭建:vite+vue2+eslint

前言 为了写 demo 或者研究某些问题,我经常需要新建空项目。每次搭建项目都要从头配置,很麻烦。所以我决定自己搭建一个项目初始化的脚手架(取名为 lily-cli)。 脚手架(scaffolding):创建项目时…

本地GPT-window平台 搭建ChatGLM3-6B

一 ChatGLM-6B 介绍 ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,新一代开源模型 ChatGLM3-6B 已发布,拥有10B以下最强的基础模型,支持工具调用(Function Call)、代码执行(Code Interpreter&…