当前位置: 首页 > article >正文

《刚刚问世》系列初窥篇-Java+Playwright自动化测试-19- 操作鼠标悬停(详细教程)

1.简介

在实际工作中,我们往往会遇到有些测试场景或者事件,playwright根本就没有直接提供方法去操作,而且也不可能面面俱到地把各种测试场景都全面覆盖提供方法去操作,这个时候就需要我们去掌握一些操作技巧。比如:就像鼠标悬停,一般测试场景鼠标悬停分两种常见,一种是鼠标悬停在某一个元素上方,然后会出现下拉子菜单,第二种就是在搜索输入过程,选择自动补全的字段。关于鼠标悬停,selenium把这个方法放在了Actions.java文件中,因此也被称之为Actions的相关操作。今天跟随宏哥先来看看鼠标悬停出现下拉菜单和自动补全的情况playwright是如何处理。

2.什么是鼠标悬停出现下拉菜单

鼠标悬停出现下拉菜单,顾名思义就是:鼠标悬停在某一元素上出现下拉菜单,然后点击菜单中的按钮或者链接会跳转到一个新的页面。

3.项目实战

宏哥这里用百度首页的“更多”元素,悬停出现下拉来菜单,然后点击“音乐”为例,进行实战演练。如下图所示:

3.1.代码设计

3.2参考代码
package com.bjhg.playwright;

import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;

/**
 * @author 北京-宏哥
 * 
 * @公众号:北京宏哥(微信搜索,关注宏哥,提前解锁更多测试干货)
 * 
 * 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-19- 操作鼠标悬停(详细教程)
 *
 * 2024年9月30日
 */
public class Test_Hover {
    
    public static void main(String[] args) {
        try (Playwright playwright = Playwright.create()) {
          //1.使用chromium浏览器,# 浏览器配置,设置以GUI模式启动Chrome浏览器(要查看浏览器UI,在启动浏览器时传递 headless=false 标志。您还可以使用 slowMo 来减慢执行速度。
          Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(3000));
          //2.创建context
          BrowserContext context = browser.newContext();
          //创建page
          Page page = context.newPage();
          //3.浏览器访问百度
          page.navigate("https://wwww.baidu.com");
          //4.定位 更多 元素
          Locator dropdown = page.locator("//*[@name='tj_briicon']");
          //5. 鼠标悬停
          dropdown.hover();
          //6. 点击 音乐 
          page.locator("//*[@name='tj_mp3']").click();
          
          System.out.println("Test Pass");
          //关闭page
          page.close();
          //关闭browser
          browser.close();
        }
    }
}
3.3运行代码

1.运行代码,右键Run As->Java Application,就可以看到控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作。如下图所示:

4.搜索输入过程,选择自动补全的字段

就是在搜索框输入关键词后,然后会自动提示与关键词相关内容,然后点击你要搜素的内容将其补全进行搜索。

5.项目实战

宏哥这里就以百度搜索为例,进行实战颜色。如下图所示:

5.1代码设计

5.2参考代码
package com.bjhg.playwright;

import com.microsoft.playwright.Browser;
import com.microsoft.playwright.BrowserContext;
import com.microsoft.playwright.BrowserType;
import com.microsoft.playwright.Locator;
import com.microsoft.playwright.Page;
import com.microsoft.playwright.Playwright;

/**
 * @author 北京-宏哥
 * 
 * @公众号:北京宏哥(微信搜索,关注宏哥,提前解锁更多测试干货)
 * 
 * 《刚刚问世》系列初窥篇-Java+Playwright自动化测试-19- 操作鼠标悬停(详细教程)
 *
 * 2024年9月30日
 */
public class Test_Hover {
    
    @SuppressWarnings("deprecation")
    public static void main(String[] args) {
        try (Playwright playwright = Playwright.create()) {
          //1.使用chromium浏览器,# 浏览器配置,设置以GUI模式启动Chrome浏览器(要查看浏览器UI,在启动浏览器时传递 headless=false 标志。您还可以使用 slowMo 来减慢执行速度。
          Browser browser = playwright.chromium().launch(new BrowserType.LaunchOptions().setHeadless(false).setSlowMo(3000));
          //2.创建context
          BrowserContext context = browser.newContext();
          //创建page
          Page page = context.newPage();
          //3.浏览器访问百度
          page.navigate("https://wwww.baidu.com");
          //4.输入查询关键词
          page.type("input[name='wd']","selenium ap");
          //5.自动补全其中一个选择项
          page.locator("//*[@id='form']/div/ul/li[@data-key='selenium appinum']").click();
          //6. 点击 音乐 
          page.click("text=百度一下");
          
          System.out.println("Test Pass");
          //关闭page
          page.close();
          //关闭browser
          browser.close();
        }
    }
}
5.3运行代码

1.运行代码,右键Run As->Java Application,就可以看到控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作。如下图所示:

6.小结

在Web应用程序中,悬停是一种常见的操作,通常用于显示提示信息或下拉菜单。宏哥这里提供一种处理思路,仅供大家学习和参考。希望对您有所帮助!最后要注意自动补全的时候,代码中的补全内容要和浏览器出现的补全内容一致,才可以测试通过,否则会报错。

好了,时间不早了,今天就分享和讲解到这里。感谢您耐心的阅读和学习。


http://www.kler.cn/a/524808.html

相关文章:

  • java——继承
  • selenium自动化测试框架——面试题整理
  • Greenplum临时表未清除导致库龄过高处理
  • 1.26学习
  • 多头潜在注意力(MLA):让大模型“轻装上阵”的技术革新——从DeepSeek看下一代语言模型的高效之路
  • 十年筑梦,再创鲸彩!庆祝和鲸科技十周年
  • 代码随想录|动态规划 300.最长递增子序列 674. 最长连续递增序列 718. 最长重复子数组
  • Go学习:格式化输入输出
  • solon-flow 你好世界!
  • C++传送锚点的内存寻址:内存管理
  • G. Rudolf and CodeVid-23
  • [250125] DeepSeek 发布开源大模型 R1,性能比肩 OpenAI o1 | 希捷推出高达 36TB 的硬盘
  • 【C++】STL容器使用与实现详解:vector
  • STM32 PWM驱动直流电机
  • 2024 CVPR Highlight Learning-Feedback
  • C# 环境:深入探讨与优化
  • Python中的函数(上)
  • 十大主流联邦学习框架:技术特性、架构分析与对比研究
  • 【电工基础】1.电能来源,触电伤害,触电预防,触电急救
  • 从 SAP 功能顾问到解决方案架构师:破茧成蝶之路
  • 联想拯救者R720笔记本外接显示屏方法,显示屏是2K屏27英寸
  • Kubernetes(一)
  • HBuilderX构建Vue项目
  • Redis缓存穿透,雪崩,击穿
  • C26.【C++ Cont】动态内存管理和面向对象的方式实现链表
  • Vue.js `setup()` 函数的使用