【python自动化】Playwright基础教程(四)事件操作①高亮元素匹配器鼠标悬停

本文目录

文章目录

    • 前言
    • 高亮显示元素定位 - highlight
      • highlight实战
      • highlight定位多个元素
    • 元素匹配器 - nth
      • nth实战演示
    • 元素匹配 - first&last

综合定位方式+时间操作进行实战,巩固之前我们学习的定位方式。

这一部分内容对应官网 : https://playwright.dev/python/docs/api/class-locator

这里挑一部分用的比较多,或者说比较实用的事件操作进行讲解,结合代码截图。

说明:事件操作这里的Locator表示定位方式,而不是locator()这个方法。上节内容我们讲到的所有定位操作都属于这个locator定位方式。

定位操作文章:【python自动化】Playwright基础教程(三)定位操作

前言

由于本文是结合实际代码操作,为了避免重复操作等麻烦步骤,这里我使用playwright连接指定浏览器,手动进入相关网址,页面直接进行相关事件操作。

playwright如何连接指定浏览器详见前文:playwright连接已有浏览器操作

简单步骤:

1、指定端口启动谷歌浏览器,mac同理(到本机安装的chrome.exe根目录下执行)

chrome.exe --remote-debugging-port=9223

2、使用connect_over_cdp方法进行连接

__author__ = "梦无矶小仔"

from playwright.sync_api import sync_playwright, Page, BrowserContext


class Demo05:
    def __init__(self):
        """
        使用playwright连接谷歌浏览器
        :return:
        """
        self.playwright = sync_playwright().start()
        # 连接已经打开的浏览器,找好端口
        browser = self.playwright.chromium.connect_over_cdp("http://127.0.0.1:9223")
        self.default_context = browser.contexts[0]
        self.page = self.default_context.pages[0]
    
    # 教程中每个事件操作我都会在这里新建方法
    def highlight(self):
        ...
        
if __name__ == '__main__':
    mwj = Demo05()
    # 高亮代码 (这里启用对应的事件方法)
    mwj.highlight()

3、如果上面的方法不会,那就用如下代码,只不过每次要自己更换url和相关页面地址,不能随心所欲的控制。

from playwright.sync_api import sync_playwright

class Demo06:
    def __init__(self, url):
        playwright = sync_playwright().start()
        browser = playwright.chromium.launch(headless=False)
        context = browser.new_context()
        self.page = context.new_page()
        self.page.goto(url)
	
    # 教程中每个事件操作我都会在这里新建方法
    def highlight(self):
        self.page.locator("#kw").highlight()


if __name__ == '__main__':
    url = "https://www.baidu.com"
    mwj = Demo06(url=url)
    # 高亮代码 (这里启用对应的事件方法)
    mwj.highlight()

高亮显示元素定位 - highlight

在我们调试元素定位的时候,不知道页面上有多少个此类元素,不清楚页面上这个元素具体显示在什么位置,这时候就可以使用 locator.highlight()

使用方法:

locator.highlight()

highlight实战

**需求:**高亮百度的搜索框(搜索框的元素id为kw)

网页对应代码:

<input id="kw" name="wd" class="s_ipt" value="梦无矶" maxlength="255" autocomplete="off">

示列代码:

def highlight(self):
    self.page.locator("#kw").highlight()

效果展示:

image-20230912171416170

我们可以看到搜索框这个元素全部高亮显示了,并且会在元素下方注明你写的元素定位方式。

highlight定位多个元素

还是上面这个页面,我们看到页面有非常多的梦无矶,我们使用如下代码再次高亮我们的元素。

def highlight(self):
    # self.page.locator("#kw").highlight()
    self.page.get_by_text("梦无矶").highlight()

效果展示:

image-20230912173857286

这对于我们调试元素定位,是不是炒鸡方便?

元素匹配器 - nth

将定位器返回到第n个元素。下标是从0开始的。nth(0)表示选择第一个元素。

使用方法

banana = page.get_by_role("listitem").nth(2)

nth实战演示

依旧使用上面的梦无矶作为展示,我们定位第二个梦无矶,并且让它高亮显示。

def nth_mwj(self):
    # 定位第二个梦无矶,并且高亮该元素
    self.page.get_by_text("梦无矶").nth(1).highlight()

效果显示

image-20230913161606789

元素匹配 - first&last

  • nth同理,first就是匹配第一个,last就是匹配最后一个。
  • first等同于nth(0)
  • last等同于nth(-1)
  • 使用方法和nth一样

代码示列

def nth_mwj(self):
    # 定位第二个梦无矶,并且高亮该元素
    self.page.get_by_text("梦无矶").nth(1).highlight()
    # 使用first定位第一个
    self.page.get_by_text("梦无矶").first.highlight()
    # 使用last定位最后一个
    self.page.get_by_text("梦无矶").last.highlight()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java SE 封装、包、static关键字和代码块

1.封装 1.1封装的概念 面向对象程序三大特性&#xff1a;封装、继承、多态。而类和对象阶段&#xff0c;主要研究的就是封装特性。何为封装呢&#xff1f;简单来说 就是套壳屏蔽细节。 封装&#xff1a;将数据和操作数据的方法进行有机结合&#xff0c;隐藏对象的属性和实现细…

关于反弹Shell个人的一些理解与学习收获

反弹Shell 概念&#xff1a; 反弹shell(reverse shell)&#xff0c;就是控制端(攻击者所有)监听某TCP/UDP端口&#xff0c;被控端发起请求到该端口&#xff0c;并将其命令行的输入输出转发到控制端。reverse shell与telnet&#xff0c;ssh等标准shell对应&#xff0c;本质上是…

C++模拟实现——AVL树

AVL树 1.介绍 AVL树是对搜索二叉树的改进&#xff0c;通过特定的方法使得每个节点的左右子树高度差绝对值不超过1&#xff0c;使得避免出现歪脖子的情况&#xff0c;最核心的实现在于插入值部分是如何去实现平衡调整的&#xff0c;由于前面详细实现和解析过搜索二叉树&#x…

Android问题笔记四十四:关于RecyclerView出现Inconsistency detected崩溃

点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册点击跳转>Scratch编程案例点击跳转>软考全系列 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&…

Linux---(六)自动化构建工具 make/Makefile

文章目录 一、make/Makefile二、快速查看&#xff08;1&#xff09;建立Makefile文件&#xff08;2&#xff09;编辑Makefile文件&#xff08;3&#xff09;解释&#xff08;4&#xff09;效果展示 三、背后的基本知识、原理&#xff08;1&#xff09;如何清理对应的临时文件呢…

vite 深入浅出

vite 深入浅出 简介 vite(轻量&#xff0c;轻快的意思) 是一个由原生 ES Module 驱动的 Web 开发前端构建工具。 浏览器原生 ESM&#xff1a;浏览器支持的 JavaScript 模块化标准&#xff0c;可以直接使用 <script type"module"> 标签加载模块&#xff0c;无…

第二证券:定增价公布后第二天股价表现?

近年来&#xff0c;定增成为一种较为老练的公司融资方法&#xff0c;它通过向指定政策定向发行股份来筹集资金&#xff0c;相关于非公开发行股票或增发股份&#xff0c;定增的市场轰动和价格变化相对较小。但是&#xff0c;定增股票发行通常会推动股价的不坚决和出资者的心境崎…

Prometheus+Ansible+Consul实现服务发现

一、简介 1、Consul简介 Consul 是基于 GO 语言开发的开源工具&#xff0c;主要面向分布式&#xff0c;服务化的系统提供服务注册、服务发现和配置管理的功能。Consul 提供服务注册/发现、健康检查、Key/Value存储、多数据中心和分布式一致性保证等功能。 在没有使用 consul 服…

【社会网络分析第5期】gephi使用指南

gephi数据可视化 gephi数据可视化1、软件安装2、数据处理与导入&#xff08;1&#xff09;导入节点&#xff08;2&#xff09;导入边&#xff08;3&#xff09;改变节点的颜色&#xff08;4&#xff09;根据pagerank调整节点的大小&#xff08;5&#xff09;根据pagerank调整边…

上海亚商投顾:沪指缩量调整跌 高位强势股继续退潮

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数11月10日弱势震荡&#xff0c;上证50盘中跌超1%&#xff0c;以保险为首的权重板块走势较弱。 高位强…

SpringCloudalibaba

一、分布式和微服务 分布式系统和服务是现代软件开发中的两个重要概念。它们为复杂的应用程序提供了模块化和可扩展性&#xff0c;使其能够在多台机器上运行&#xff0c;并为大量用户提供服务。 分布式系统 定义: 分布式系统是由多个独立组件组成的系统&#xff0c;这些组件…

Maven 插件统一修改聚合工程项目版本号

目录 引言直接修改 pom.xml 的版本号的问题Maven 插件修改版本号开源项目微服务商城项目前后端分离项目 引言 在Maven项目中&#xff0c;我们通常有两种常见的方式来修改版本号&#xff1a;直接在pom.xml文件中手动编辑和利用Maven插件进行版本号调整。 本文将比较这两种修改…

R语言编写代码示例

R语言编写的爬虫程序&#xff0c;使用了requests库来发送请求&#xff0c;使用BeautifulSoup库来解析HTML。 r # 第一步&#xff0c;安装必要的库 install.packages("xml2") install.packages("requests") install.packages("httr") install.pac…

【系统安装】ubuntu20.04安装,正经教程,小白安装教程,百分百成功安装

1、安装的前提是有启动盘&#xff0c;这个比较好处理&#xff0c;清华源找到ubuntu20.04.iso镜像文件下载&#xff0c;然后用Rufus来制作启动盘就可以了&#xff0c;需要注意的是目标文件系统需要是UEFI&#xff0c;其他的话就没太多要求了&#xff0c;如果卡在这一步的话&…

助力燃气安全运行:智慧燃气管网背景延展

关键词&#xff1a;城市燃气管网、智慧燃气管网、智慧管网、智慧燃气管网解决方案、智慧燃气 01背景 当前&#xff0c;随着我国城市化进程不断加快&#xff0c;城市燃气管网也不断延伸&#xff0c;运行规模庞大&#xff0c;地下管线复杂&#xff0c;不少城市建设“重地上轻地…

Windows系统下使用docker部署redis

使用虚拟机部署redis&#xff0c;虚拟机很占用电脑资源&#xff0c;所以选择使用docker对redis进行部署。 一、安装docker 安装链接&#xff1a;https://docker.p2hp.com/ 二、配置redis.conf文件 下载配置文件&#xff1a;https://download.redis.io/redis-stable/redis.con…

Js 语句

JavaScript 语句向浏览器发出的命令&#xff0c;语句的作用是告诉浏览器该做什么&#xff1b;分号用于分隔 JavaScript 语句&#xff0c;通常我们在每条可执行的语句结尾添加分号&#xff1b;使用分号的另一用处是在一行中编写多条语句。 JavaScript 语句通常以一个 语句标识符…

【C语言】深入解开指针(二)

&#x1f308;write in front :&#x1f50d;个人主页 &#xff1a; 啊森要自信的主页 &#x1f308;作者寄语 &#x1f308;&#xff1a; 小菜鸟的力量不在于它的体型&#xff0c;而在于它内心的勇气和无限的潜能&#xff0c;只要你有决心&#xff0c;就没有什么事情是不可能的…

Hubspot是如何发展到今天的?有哪些实用工具?

HubSpot&#xff0c;作为一家全球领先的数字化市场营销和销售平台提供商&#xff0c;通过其强大的生态圈和创新的解决方案&#xff0c;帮助企业实现高效运营、客户吸引和业务增长。运营坛今天将详细介绍HubSpot的发展历程以及其三大核心产品&#xff1a;CMS Hub、Marketing Hub…

雷达波形及MATLAB仿真

文章目录 前言一、雷达波形二、Matlab 仿真1、SFW 的距离分辨率和距离模糊①、MATLAB 源码②、仿真结果 三、资源自取 前言 本文对雷达波形的内容以思维导图的形式呈现&#xff0c;有关仿真部分进行了讲解实现。 一、雷达波形 思维导图如下图所示&#xff0c;如有需求请到文章…