Selenium定位方法及代码

news/2024/5/21 1:39:54

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


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


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

文章目录

    • 1. 定位方法
    • 2. Java代码


执行程序前请先配置驱动:
关于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. Java代码

完整代码
LocateElementTest.java

package com.libai.test.selenium.chrome;import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;/*** @ClassDescription: 元素定位:定位页面中的某个元素标签的位置* @JdkVersion: 1.8* @Author: 李白* @Created: 2024/5/8 10:16*/
public class LocateElementTest {public static void main(String[] args) {//指定驱动,第一个参数为驱动名称,不同浏览器的参数名称不一样,请根据浏览器查询到对应的浏览器参数名,第二个参数为驱动文件路径,即驱动完整文件路径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");//指定窗口大小--最大化webDriver.manage().window().maximize();//定位页面元素的方法=======================================================================//一、input标签元素定位====如我们现在有一个网页,输入框input部分的前端代码如下:/*<input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">*///对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"));//二、网页的文本链接元素定位=====如百度首页的文本链接代码如下/*<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>*///对文本链接进行定位的方法如下//7-通过link text定位,定位后使用click函数点击跳转到新闻页面
//        webDriver.findElement(By.linkText("新闻")).click();
//        webDriver.findElement(By.linkText("hao123")).click();//8-通过partialLink text定位
//        webDriver.findElement(By.partialLinkText("新闻"));
//        webDriver.findElement(By.partialLinkText("hao"));
//        webDriver.findElement(By.partialLinkText("hao123"));//注意:以下两种定位方式的测试不能同时执行,执行一个需要将另一个注释掉//通过定位找到input输入框的位置,并使用sendKeys进行文本内容填充到输入框
//        webDriver.findElement(By.id("kw")).sendKeys("李白");//通过定位找到新闻文本链接的位置,并使用click进行跳转到新闻页面,暂时无法解决关闭这个新开的新闻网页webDriver.findElement(By.linkText("新闻")).click();//等待5秒try {Thread.sleep(5000);} catch (InterruptedException e) {throw new RuntimeException(e);}//关闭资源(关闭浏览器)webDriver.close();}
}

感谢阅读,祝君暴富!


http://www.mrgr.cn/p/80463152

相关文章

【Azure App Service】列举为App Service集成虚拟网络(VNET)操作时所需要的最小权限

问题描述 作为Azure资源管理人员,对每一种资源操作时,都需要考虑权限设置。否则,会遇见类似如下错误:The client *************** with object id ********-****-****-****-************ does not have authorization to perform action Microsoft.Network/virtualNetworks…

简单的神经网络

一、softmax的基本概念 我们之前学过sigmoid、relu、tanh等等激活函数&#xff0c;今天我们来看一下softmax。 先简单回顾一些其他激活函数&#xff1a; Sigmoid激活函数&#xff1a;Sigmoid函数&#xff08;也称为Logistic函数&#xff09;是一种常见的激活函数&#xff0c…

精准读取CSV/Excel数据 - 灵活指定行列范围的 Python 解决方案

文章目录 源代码项目简介导入相关库__file_exists 装饰器函数的签名和注释主要功能的实现运行演示读取 Excel 文件 源代码 https://github.com/ma0513207162/PyPrecip。pyprecip\reading\read_api.py 路径下。 项目简介 PyPrecip 是一个专注于气候数据处理的 Python 库&#xf…

【C语言】整数和浮点数在内存中的存储

大家可能在学习的时候会经常疑惑数据在内存中是怎样存储的&#xff0c;今天用一篇博客给你讲清楚&#xff01;&#xff01;&#xff01;从此不再疑惑&#xff01;&#xff01;&#xff01; 文章目录 1. 整数在内存中的存储2. 大小端字节序和字节序判断2.1 什么是大小端2.2 为什…

Makdown语法合集

目录页 1. Markdown使用平台1.1. VS Code 平台1.1.1. 安装链接 1.1.2. Markdown使用的插件安装1.1.2.1. Markdown All in On 1.1.2.2. Markdown Preview Enhanced2. 普通文本编写规则2.1. 标题使用样式 2.2. 标题目录的生成 2.3. 自动添加章节号码 2.4. 常规格式 2…

【Java】获取近六个月的年月

以当前月份为标准,向前获取近6个月的年月(year_month)形成列表数据库里面存储的字段类型就是varchar,数据格式就是类似2024-12这样的年月格式。 目标: 以当前月份为标准,向前获取近6个月的年月(year_month)形成列表// 获取近6个月的年月列表List<String> recentM…

esp32-cam 2. python opencv 拉取摄像头内容

0. 环境 - win10 python3 - pycharm - esp32-cam http://192.168.4.1 1. 创建工程 File -> Create Project -> -> Location: E:\Workspaces\PycharmProjects\esp32cam_opencv -> Create 2. opencv hello 2.1 添加脚本 File -> New -> Python f…

Java 集合-List

集合主要分为两组(单列集合, 双列集合) Connection 接口有两个重要的子接口LIst 和 Set, 它们的实现子类都是单列集合, Map 接口的实现子类是双列集合, 存放的是 K-V Connection 接口 Collection 接口和常用方法 下面以 ArrayList 演示一下 add: 添加单个元素remove: 删除指…

T2,3,4,5,9动态背包问题

本文主要介绍常见的四种背包问题前言 本文主要介绍常见的四种背包问题,思维导图如下:一、01背包💡 现有 N 件物品和一个最多能承重 M 的背包,第 i 件物品的重量是 wi​,价值是 vi​。在背包能承受的范围内,试问将哪些物品装入背包后可使总价值最大,求这个最大价值。因为…

luogu P4342[IOI1998]Polygon

题目大意 给定一个多边形,对应节点上标记有一个数字,每条边上标记有加(t)或乘(x)表示相邻两个节点可进行的操作,操作后两个节点将合并为一个节点,首先删去一条边(不进行操作),之后在若干次操作后使得该多边形只剩一个节点,且要求所剩节点标记的数最大化,询问最大的…

ES底层原理

1、倒排索引 Elasticsearch 使用一种称为倒排索引的结构,它适用于快速的全文搜索。 有倒排索引,肯定会对应有正向索引:正向索引(forward index) 反向索引(inverted index,实际就是倒排索引)所谓的正向索引,就是搜索引擎会将待搜索的文件都对应一个文件ID,搜索时将这个…

Spring Security基础教程:从入门到实战

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目&#xff1a;CSDN主页YAML墨韵 学如逆水行舟&#xff0c…

Jenkins(超详细的Docker安装Jenkins教程!!!)

Jenkins Jenkins&#xff0c;原名 Hudson&#xff0c;2011 年改为现在的名字。它是一个开源的实现持续集成的软件工具。 官方网站&#xff1a;https://www.jenkins.io/ 中文文档&#xff1a;https://www.jenkins.io/zh/ 为什么需要Jenkins&#xff1f; 我们以前写完代码&a…

24-有参转录组实战10-差异基因KEGG富集分析

KEGG富集分析##########下面做KEGG######## emapper <- read.delim("out.emapper.annotations") emapper[emapper=="-"] <- NA#change "-" to "NA" emapper <- emapper[-(49584:49586),]#remove the final 3 rows DE <- r…

学习笔记:【QC】Android Q - IMS 模块

一、IMS init 流程图 高清的流程图参考&#xff1a;【高清图&#xff0c;保存后可以放大看】 二、IMS turnon 流程图 高清的流程图参考&#xff1a;【高清图&#xff0c;保存后可以放大看】 三、分析说明 1、nv702870 不创建ims apn pdp 2、nv702811 nv702811的时候才创建…

基于FPGA实现的HDMI TO MIPI扩展显示器方案

FPGA方案&#xff0c;HDMI IN接收原始HDMI 信号&#xff0c;输出显示到LCD 屏上 客户应用&#xff1a;扩展显示器 主要特性&#xff1a; 1.支持2K以下任意分辨率显示 2.支持OSD 叠加多个图层 3.支持MIPI/EDP/LVDS/RGB屏 4.支持放大缩小匹配屏分辨率 5.零延时&#xff0c;输…

docker部署nginx并配置https

1.准备SSL证书&#xff1a; 生成私钥&#xff1a;运行以下命令生成一个私钥文件。 生成证书请求&#xff08;CSR&#xff09;&#xff1a;运行以下命令生成证书请求文件。 生成自签名证书&#xff1a;使用以下命令生成自签名证书。 openssl genrsa -out example.com.key 2048 …

【js】将一维数组处理成树形数据并且实现模糊查询

项目中由于数据量不大&#xff0c;后台并未做处理&#xff0c;因此前端拿到返回的Table数据需要处理成树形数据再渲染到表格中 原始数据 const dataList[{"id": 44,"seedlingName": "测试2","seedlingType": "测试2",&quo…

Flutter笔记:Widgets Easier组件库(13)- 使用底部弹窗

Flutter笔记 Widgets Easier组件库&#xff08;13&#xff09;使用底部弹窗 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this …