Selenium定位方法汇总及举例

天行健,君子以自强不息;地势坤,君子以厚德载物。


每个人都有惰性,但不断学习是好好生活的根本,共勉!


文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。

文章目录

    • 1. 定位方法
    • 2. input标签的定位
      • 2.1 input标签代码
      • 2.2 定位方法代码
      • 2.3 定位后的操作方法
    • 3. 文本链接的定位


执行程序前请先配置驱动:
关于Java selenium使用前浏览器驱动的下载和环境变量的配置
关于Selenium自动化测试工具的Java实现详情请参考文章:
如何查看页面对应的Selenium定位参数
Java实现 selenium Web自动化测试(简单篇)
Java实现 selenium Web自动化测试(详细篇)

1. 定位方法

想要模拟浏览器操作就需要先定位浏览器的输入框按钮等标签位置
selenium提供了8种定位方式,这8种定位方式在Java selenium中对应八种方法

selenium定位方式Java selenium定位方法
idfindElement(By.id())
namefindElement(By.name())
class namefindElement(By.className())
tag namefindElement(By.tagName())
link textfindElement(By.linkText())
partialink textfindElement(By.partialLinkText())
xpathfindElement(By.xpath())
css selectorfindElement(By.cssSelector())

接下来就是8种定位方式和定位后的操作

2. input标签的定位

以百度首页的搜索框为例
在这里插入图片描述

如不知如何查看对应的input标签可到后续章节中找到对应的方法进行查看

2.1 input标签代码

百度首页输入框页面的input标签对应代码如下

<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

2.2 定位方法代码

输入框定位方法在代码中如下:
在main方法中加入代码即可执行

        //指定驱动,第一个参数为驱动名称,不同浏览器的参数名称不一样,请根据浏览器查询到对应的浏览器参数名,第二个参数为驱动文件路径,即驱动完整文件路径System.setProperty("webdriver.chrome.driver", "D:\\JavaSoftWares\\Google\\driver\\chromedriver-win64\\chromedriver.exe");// 谷歌驱动ChromeOptions cops = new ChromeOptions();// 允许所有请求cops.addArguments("--remote-allow-origins=*");//创建驱动对象WebDriver webDriver = new ChromeDriver(cops);// 启动需要打开的网页webDriver.get("https://www.baidu.com");//定位方法的使用,如定位前端input标签的输入框,定位方式如下//1-通过id定位webDriver.findElement(By.id("kw"));//2-通过name定位webDriver.findElement(By.name("wd"));//3-通过class name定位webDriver.findElement(By.className("s_ipt"));//4-通过tag name定位----因无tag标签,暂未验证webDriver.findElement(By.tagName("input"));//5-通过xpath定位,该定位方法有很多种写法,常用的几种如下:webDriver.findElement(By.xpath("//*[@id='kw']"));webDriver.findElement(By.xpath("//*[@name='wd']"));webDriver.findElement(By.xpath("//input[@class='s_ipt']"));webDriver.findElement(By.xpath("//form[@id='form']/span/input"));webDriver.findElement(By.xpath("//input[@id='kw' and @name='wd']"));//6-通过css定位,同样有很多种方法,如下为几种常用方法:webDriver.findElement(By.cssSelector("#kw"));webDriver.findElement(By.cssSelector("[name=wd]"));webDriver.findElement(By.cssSelector(".s_ipt"));webDriver.findElement(By.cssSelector("form#form > span > input"));     

2.3 定位后的操作方法

定位后可使用如下方法进行操作输入框:

  • 清除输入框内容
    clear()

  • 往输入框中填值
    sendKeys()

代码如下:

        //定位输入框的文本内容WebElement webElement_searchTest = webDriver.findElement(By.id("kw"));//定义输入框中文本的值webElement_searchTest.sendKeys("李白");//等待三秒try {Thread.sleep(3000);} catch (InterruptedException e) {throw new RuntimeException(e);}//清空输入框中文本内容webElement_searchTest.clear();

3. 文本链接的定位

如百度首页的文本链接:新闻、hao123、地图等
在这里插入图片描述
定位代码如下

        //指定驱动,第一个参数为驱动名称,不同浏览器的参数名称不一样,请根据浏览器查询到对应的浏览器参数名,第二个参数为驱动文件路径,即驱动完整文件路径System.setProperty("webdriver.chrome.driver", "D:\\JavaSoftWares\\Google\\driver\\chromedriver-win64\\chromedriver.exe");// 谷歌驱动ChromeOptions cops = new ChromeOptions();// 允许所有请求cops.addArguments("--remote-allow-origins=*");//创建驱动对象WebDriver webDriver = new ChromeDriver(cops);// 启动需要打开的网页webDriver.get("https://www.baidu.com");//文本链接定位,如百度首页的文本链接代码如下/*<a href="http://news.baidu.com" target="_blank" class="mnav c-font-normal c-color-t">新闻</a><a href="https://www.hao123.com?src=from_pc_logon" target="_blank" class="mnav c-font-normal c-color-t">hao123</a>*///对文本链接进行定位的方法,以下均在定位后通过.click方法进行点击访问//7-通过link text定位webDriver.findElement(By.linkText("新闻")).click();try {Thread.sleep(3000);} catch (InterruptedException e) {throw new RuntimeException(e);}webDriver.findElement(By.linkText("hao123")).click();//8-通过partialLink text定位webDriver.findElement(By.partialLinkText("新闻")).click();webDriver.findElement(By.partialLinkText("hao")).click();webDriver.findElement(By.partialLinkText("hao123")).click();

执行程序后浏览器会自动跳转到文本链接对应的页面,上述代码会打开对应的文本链接


感谢阅读,祝君暴富!

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

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

相关文章

Bpmn.js使用(仅查看版)

Bpmn.js使用&#xff08;仅查看版&#xff09; 下载 npm install bpmn-js创建一个 Dom 节点来挂载画布元素。 <a-tabs v-model:activeKey"activeKey" change"tabsChange"><a-tab-pane key"1" tab"审批记录"><a-tabl…

React 之 forwardRef用法(十六)

forwardRef 是 React 中的一个高级功能&#xff0c;它允许你将一个 ref 传递给子组件&#xff0c;即使该子组件是通过函数式组件定义的。这在某些情况下很有用&#xff0c;比如当你需要直接访问 DOM 元素或类组件的实例时。 vue则通过this.$refs.XX或this.$children访问子组件的…

mysql基础概念

文章目录 登录mysqlmysql和mysqld数据库操作主流数据库MYSQL架构SQL分类 登录mysql 登录mysql连接服务器&#xff0c;mysql连接时可以指明主机用-h选项&#xff0c;然后就可以指定主机Ip地址&#xff0c;-P可以指定端口号 -u指定登录用户 -P指定登录密码 查看系统中有无mysql&…

【退役之重学Java】Redis 的过期策略

Redis 的过期策略 一、假设设置一个key 只能存活1h&#xff0c;那么1h之后&#xff0c;Redis 是怎么对这批 key 进行删除的&#xff1f; 回答&#xff1a; 定期删除 惰性删除 所谓定期删除&#xff0c;指的是 Redis 默认每隔100ms 就随机抽取一些设置了过期时间的 key&…

解决离线服务器无法加载HuggingFaceEmbeddings向量化模型的问题

由于服务器是离线的&#xff0c;因此我先在本地到huggingface官网下载模型text2vec&#xff0c;然后上传到服务器上运行&#xff0c;报错&#xff1a; (MaxRetryError(HTTPSConnectionPool(host\huggingface.co\, port443): Max retries exceeded with url: /api/models/senten…

代码随想录——二叉树的层序遍历Ⅱ(Leetcode107)

题目链接 层序遍历&#xff08;队列&#xff09; /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { this.val val; }* TreeNode(int val, Tre…

### 【数据结构】线性表--顺序表(二)

文章目录 1、什么是线性表2、线性表的基本操作3、顺序表3.1、顺序表的定义3.2、顺序表的实现方式&#xff1a;静态分配3.3、顺序表的实现方式&#xff1a;动态分配3.4、顺序表的特点3.5、顺序表的初始化与插入操作3.6、顺序表的删除与查询 1、什么是线性表 ​ 线性表是具有相同…

常用的 Ansible 模块

以下是一些常用的 Ansible 模块&#xff1a; - ping 模块&#xff1a;用于检测目标主机是否可达。 - file 模块&#xff1a;可以管理文件和目录&#xff0c;如创建、删除、修改权限等。 - copy 模块&#xff1a;用于将本地文件复制到远程主机。 - service 模块&#xff1a;管…

【配置】IT-Tools部署

github地址 docker运行如下&#xff0c;记得打卡端口 docker run -d --name it-tools --restart unless-stopped -p 9090:80 corentinth/it-tools:latestip:9090查看&#xff0c;很香大部分工具都有

【神经网络】矩阵乘法的应用详解

文章目录 一、多维数组使用NumPy创建和操作多维数组 二、矩阵乘法矩阵乘法的基本定义计算 2x2 矩阵的乘积矩阵形状的要求特殊情况&#xff1a;矩阵与向量的乘积 三、神经网络中的矩阵乘法神经网络的结构简介矩阵乘法在神经网络中的应用计算细节和NumPy的实现 一、多维数组 多维…

一键追爆款,GPT一键改文‌‍‬⁣⁡​⁤⁢​⁢⁡⁣‬‍‌​​‬ ​‍⁤‬ ‬⁡⁡⁡‍‌‬⁡⁡⁢‬⁤⁢⁢⁤​‍‌​​‬ ​⁣‌,绘唐3,绘唐工具

ai画影满足你的制作要求 一键追爆款&#xff0c;GPT一键改文 AI推文小说&漫画解说&解压混剪 人物定义&#xff0c;角色定义&#xff0c;lora转换&#xff0c;模型转换&#xff0c;可视化参考满足 一键追爆款 一键挂机生成&#xff0c;效果更精彩&#xff0c;使用更方…

mysql 其他类型转换为BIT

看官网说明,BIT没什么特殊之处。但实际操作却不能将任何其他类型字段转为BIT,下面两个都报语法错误 CAST(column AS BIT(1)) AS aa , CAST(column AS BIT) AS bb, BIT value则模式是VARBINARY b1 as cc, -- cc为VARBINARY类型 下面是《高性能MySQL(第四版)》中关于BIT类型的…

C++随手写一个打字练习软件TL(TypeLetters)附原码

C随手写一个打字练习软件TL&#xff08;TypeLetters&#xff09;附原码 说明 软件名称&#xff1a;TL&#xff08;TypeLetters&#xff09; 开发语言&#xff1a;C 适合人群&#xff1a;零基础小白或C学习者 软件功能&#xff1a;打字练习软件TL&#xff08;TypeLetters&#…

解双曲型非线性方程的Harden-Yee算法(TVD格式)

解双曲型非线性方程的Harden-Yee算法 先贴代码&#xff0c;教程后面有空再写 import matplotlib import math matplotlib.use(TkAgg) import numpy as np import matplotlib.pyplot as plt def Phiy(yy,epsi):#phi(y)if abs(yy) > epsi:phiyy abs(yy)else:phiyy (yy*yy…

国外在线教育系统源码,知识付费课程录制流程是什么样?

无论是从信息内容优化&#xff0c;还是知识产权保护的角度来看&#xff0c;“内容付费”都是一个有力的抓手&#xff0c;并且也一定是未来互联网发展的一个重要方向。与此同时&#xff0c;互联网技术的不断进步降低了“内容付费”的使用门槛&#xff0c;越来越多的人企图搭上这…

2024年华为OD机试真题-螺旋数字矩阵-Java-OD统一考试(C卷D卷)

题目描述: 疫情期间,小明隔离在家,百无聊赖,在纸上写数字玩。他发明了一种写法: 给出数字个数n和行数m(0 < n ≤ 999,0 < m ≤ 999),从左上角的1开始,按照顺时针螺旋向内写方式,依次写出2,3...n,最终形成一个m行矩阵。 小明对这个矩阵有些要求: 1.每行数字的…

2024年记录

kong docker 安装: kong docker 安装

C++ VScode: launch: program ...... dose not exist

VScode: launch: program … dose not exist 介绍 参考VS Code 配置 C/C 编程运行环境&#xff08;保姆级教程&#xff09;教程配置了VSCode。在配置launch.json适用多个.c 文件编译时&#xff0c;弹出下面错误。 原因和解决方法 是task.json 默认配置的问题。 默认的 cwd参…

【深度学习Labelme】使用Segment Anything Model (SAM)快速打标,labelme多边形转yolo txt框看看对不对

文章目录 windows安装环境打开labelme自动保存勾选上&#xff0c;保存图片数据不要勾选选SAM精准模型&#xff0c;然后打开图片路径&#xff0c;然后点击创建AI多边形&#xff1a;鼠标点击确认物体控制点&#xff0c;确认完成后&#xff0c;双击鼠标完成选取&#xff0c;并给上…

利用OpenShift的ImageStream部署临时版本

公司是港企&#xff0c;项目都部署在OpenShift上统一管理&#xff0c;因为运行环境为香港网络(外网)&#xff0c;配置、中间件等大陆无法直接访问联通。因此在大陆开发时&#xff0c;测试是个很大的问题。为了避免往Git上频繁提交未确定可用的版本&#xff0c;选择用利用OpenSh…