1.简介

  有些测试场景或者事件,Selenium根本就没有直接提供方法去操作,而且也不可能把各种测试场景都全面覆盖提供方法去操作。比如:就像鼠标悬停,一般测试场景鼠标悬停分两种常见,一种是鼠标悬停在某一个元素上方,然后会出现下拉子菜单,第二种就是在搜索输入过程,选择自动补全的字段。关于鼠标悬停,selenium把这个方法放在了Actions.java文件中,先来看看鼠标悬停出现下拉菜单的情况。

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

  鼠标悬停出现下拉菜单,顾名思义就是:鼠标悬停在某一元素上出现下拉菜单。

2.1项目实战

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

2.2代码设计

  代码设计如下:

2.3参考代码

  参考代码如下:

  1. package lessons;
  2.  
  3. import org.openqa.selenium.By;
  4. import org.openqa.selenium.WebDriver;
  5. import org.openqa.selenium.WebElement;
  6. import org.openqa.selenium.chrome.ChromeDriver;
  7. import org.openqa.selenium.interactions.Actions;
  8. import org.openqa.selenium.support.ui.ExpectedConditions;
  9. import org.openqa.selenium.support.ui.WebDriverWait;
  10.  
  11. /**
  12. * @author 北京-宏哥
  13. *
  14. * 《手把手教你》系列技巧篇(二十九)-java+ selenium自动化测试- Actions的相关操作上篇(详解教程)
  15. *
  16. * 2021年9月26日
  17. */
  18. public class ActionMusic {
  19.  
  20. public static void main(String[] args) throws InterruptedException {
  21.  
  22. System.setProperty("webdriver.gecko.driver",".\\Tools\\chromedriver.exe"); // 指定驱动路径
  23.  
  24. WebDriver driver = new ChromeDriver();
  25. // 最大化窗口
  26. driver.manage().window().maximize();
  27. // 打开百度首页
  28. driver.get("http://wwww.baidu.com");
  29. // 声明一个Action对象
  30. Actions action = new Actions(driver);
  31. // 鼠标移动到 更多产品 上
  32. action.moveToElement(driver.findElement(By.xpath("//a[text()='更多']")))
  33. .perform();
  34. // 显示等待时间10s 等 全部产品>> 出现
  35. WebDriverWait w = new WebDriverWait(driver, 10);
  36. w.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By
  37. .xpath("//a[text()='查看全部百度产品 >']")));
  38. // 等待的元素出现后点击 音乐
  39. WebElement cp = driver.findElement(By.xpath("//a/div[text()='音乐']"));
  40. cp.click();
  41. }
  42. }

2.4运行代码

1.运行代码,右键Run AS->java Application,控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作,如下小视频所示:

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

  在搜索框输入关键词后,后提示相关内容,然后将其补全进行搜索。

3.1项目实战

  宏哥这里就以百度搜索为例,进行实战。

3.2代码设计

  代码设计如下:

3.3参考代码

  参考代码如下:

  1. package lessons;
  2.  
  3. import java.util.concurrent.TimeUnit;
  4.  
  5. import org.openqa.selenium.By;
  6. import org.openqa.selenium.WebDriver;
  7. import org.openqa.selenium.WebElement;
  8. import org.openqa.selenium.chrome.ChromeDriver;
  9. import org.openqa.selenium.interactions.Actions;
  10.  
  11. /**
  12. * @author 北京-宏哥
  13. *
  14. * 《手把手教你》系列技巧篇(二十九)-java+ selenium自动化测试- Actions的相关操作上篇(详解教程)
  15. *
  16. * 2021年9月26日
  17. */
  18. public class SearchOpration {
  19.  
  20. public static void main(String[] args) throws Exception {
  21.  
  22. System.setProperty("webdriver.chrome.driver",".\\Tools\\chromedriver.exe");
  23.  
  24. WebDriver driver = new ChromeDriver();
  25.  
  26. driver.manage().window().maximize();
  27.  
  28. driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
  29.  
  30. driver.get("https://www.baidu.com/");
  31.  
  32. Thread.sleep(1000);
  33.  
  34. // 设置
  35. WebElement inputbox = driver.findElement(By.id("kw"));
  36. inputbox.sendKeys("selenium a");
  37.  
  38. // 自动补全其中一个选择项
  39. WebElement auto_text = driver.findElement(By.xpath("//*[@id='form']/div/ul/li[@data-key='selenium appium']"));
  40.  
  41. Actions action = new Actions(driver);
  42. action.moveToElement(auto_text).click().perform();
  43. }
  44. }

3.4运行代码

1.运行代码,右键Run AS->java Application,控制台输出,如下图所示:

2.运行代码后电脑端的浏览器的动作,如下小视频所示:

4.小结

  好了时间也不早了,Actions类中鼠标悬停方法就介绍到这里。提前祝大家、小伙伴和童鞋们国庆节快乐!!!

《手把手教你》系列技巧篇(二十九)-java+ selenium自动化测试- Actions的相关操作上篇(详解教程)的更多相关文章

  1. 《手把手教你》系列技巧篇(三十)-java+ selenium自动化测试- Actions的相关操作下篇(详解教程)

    1.简介 本文主要介绍两个在测试过程中可能会用到的功能:Actions类中的拖拽操作和Actions类中的划取字段操作.例如:需要在一堆log字符中随机划取一段文字,然后右键选择摘取功能. 2.拖拽操 ...

  2. 《手把手教你》系列技巧篇(十)-java+ selenium自动化测试-元素定位大法之By class name(详细教程)

    1.简介 按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍By ClassName.看到ID,NAME这些方法的讲解,小伙伴们和童鞋们应该知道,要做好Web自动化测试,最好是需要了 ...

  3. 《手把手教你》系列技巧篇(二十八)-java+ selenium自动化测试-处理模态对话框弹窗(详解教程)

    1.简介 在前边的文章中窗口句柄切换宏哥介绍了switchTo方法,这篇继续介绍switchTo中关于处理alert弹窗的问题.很多时候,我们进入一个网站,就会弹窗一个alert框,有些我们直接关闭, ...

  4. 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)

    1.简介 在实际自动化测试过程中,我们也避免不了会遇到下拉选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助. 2.select 下拉框 2.1Select ...

  5. 《手把手教你》系列技巧篇(四十八)-java+ selenium自动化测试-判断元素是否可操作(详解教程)

    1.简介 webdriver有三种判断元素状态的方法,分别是isEnabled,isSelected 和 isDisplayed,其中isSelected在前面的内容中已经简单的介绍了,isSelec ...

  6. 《手把手教你》系列技巧篇(四十七)-java+ selenium自动化测试-判断元素是否显示(详解教程)

    1.简介 webdriver有三种判断元素状态的方法,分别是isEnabled,isSelected 和 isDisplayed,其中isSelected在前面的内容中已经简单的介绍了,isSelec ...

  7. 《手把手教你》系列技巧篇(十七)-java+ selenium自动化测试-元素定位大法之By css上卷(详细教程)

    1.简介 CSS定位方式和xpath定位方式基本相同,只是CSS定位表达式有其自己的格式.CSS定位方式拥有比xpath定位速度快,且比CSS稳定的特性.下面详细介绍CSS定位方式的使用方法.xpat ...

  8. 《手把手教你》系列技巧篇(三十一)-java+ selenium自动化测试- Actions的相关操作-番外篇(详解教程)

    1.简介 上一篇中,宏哥说的宏哥在最后提到网站的反爬虫机制,那么宏哥在自己本地做一个网页,没有那个反爬虫的机制,谷歌浏览器是不是就可以验证成功了,宏哥就想验证一下自己想法,于是写了这一篇文章,另外也是 ...

  9. 《手把手教你》系列技巧篇(六)-java+ selenium自动化测试-阅读selenium源码(详细教程)

    1.简介 前面几篇基础系列文章,足够你迈进了Selenium门槛,再不济你也至少知道如何写你第一个基于Java的Selenium自动化测试脚本.接下来宏哥介绍Selenium技巧篇,主要是介绍一些常用 ...

随机推荐

  1. 回忆(一):反射中获得class对象的三种方法

    package reflex; /* * 反射:就是通过class文件对象 去使用该文件中的成员 * 变量,构造方法,成员方法. * * Person p = new Person(); p.使用 * ...

  2. JDBC基础篇(MYSQL)——PreparedStatement执行DML、DQL等

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package day03.prepare; import java.sql.Connection; import java.sql ...

  3. ProjectEuler 005题

    题目: 2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any ...

  4. spring之自定义注解

    java.lang.annotation提供了四种元注解,专门注解其他的注解: @Target –注解用于什么地方,默认值为任何元素,表示该注解用于什么地方.可用的ElementType指定参数 ,也 ...

  5. 聊聊spring事务失效的12种场景,太坑了

    前言 对于从事java开发工作的同学来说,spring的事务肯定再熟悉不过了. 在某些业务场景下,如果一个请求中,需要同时写入多张表的数据.为了保证操作的原子性(要么同时成功,要么同时失败),避免数据 ...

  6. 对 RESTful 的理解

    REST 全称 Representation State Transfor (资源表现层状态改变) 实际上是指客户端通过http/https协议手段来改变URI的状态转化,达到请求不同的资源的目的. ...

  7. C# Dapper基本三层架构使用 (四、Web UI层)

    三层架构的好处,一套代码无论WinForm还是Web都可以通用,只写前台逻辑就可以了,现在展示Web调用三层的示例 首先在项目中创建一个Web MVC5项目,目前项目目录如下 在Web项目Web.co ...

  8. MySQL索引、事务、存储引擎

    一.MySQL 索引 1.索引的概念 ●索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址).●使用索引后可以不用扫描 ...

  9. RabbitMQ核心知识总结!

    本文已经收录到github仓库,此仓库用于分享Java相关知识总结,包括Java基础.MySQL.Spring Boot.MyBatis.Redis.RabbitMQ.计算机网络.数据结构与算法等等, ...

  10. Git 初识和使用

    目录 目录 目录 概念 工作区/暂存区/版本库 master 版本号 常见命令 环境搭建 Linux 下 Git 和 GitHub 环境的搭建 Git 本地操作 本地仓库的创建和使用 查看信息 查看状 ...