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();

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


感谢阅读,祝君暴富!

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

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

相关文章

arp icmp 等报文格式

ARP报文格式 ARP是一个独立的三层协议&#xff0c;所以ARP报文在向数据链路层传输时不需要经过IP协议的封装&#xff0c;而是直接生成自己的报文&#xff0c;其中包括ARP报头&#xff0c;到数据链路层后再由对应的数据链路层协议&#xff08;如以太网协议&#xff09;进行封装…

2022 年全国职业院校技能大赛高职组云计算赛项试卷(容器云)

#需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包及镜像&#xff09;或有问题的&#xff0c;可私聊博主&#xff01;&#xff01;&#xff01; #需要资源&#xff08;软件包…

C#上位机1ms级高精度定时任务

precisiontimer 安装扩展包 添加引用 完整代码 using PrecisionTiming;using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; us…

Android虚拟机机制

目录 一、Android 虚拟机 dalvik/art&#xff08;6版本后&#xff09;二、Android dex、odex、oat、vdex、art区别 一、Android 虚拟机 dalvik/art&#xff08;6版本后&#xff09; 每个应用都在其自己的进程中运行&#xff0c;都有自己的虚拟机实例。ART通过执行DEX文件可在设…

C——单链表

一.前言 我们在前面已经了解了链表中的双向链表&#xff0c;而我们在介绍链表分类的时候就说过常用的链表只有两种——双向带头循环链表和单向不带头不循环链表。下来我来介绍另一种常用的链表——单向不带头不循环链表也叫做单链表。不清楚链表分类的以及不了解双向链表的可以…

react18【系列实用教程】JSX (2024最新版)

为什么要用 JSX&#xff1f; JSX 给 HTML 赋予了 JS 的编程能力 JSX 的本质 JSX 是 JavaScript 的语法扩展&#xff0c;浏览器本身不能识别&#xff0c;需要通过解析工具&#xff08;如babel&#xff09;解析之后才能在浏览器中运行。 bable 官网可以查看解析过程 JSX 的语法 …

杭州打的样,适合全国推广

房地产 昨天&#xff0c;杭州和西安全面解除房地产限购。 在房价跌跌不休的今天&#xff0c;这两大城市取消限购其实并不意外。 尤其是杭州&#xff0c;土地财政依赖全国第一&#xff0c;绷不住很正常。 近十年&#xff0c;杭州依靠于亚运会、G20 和阿里巴巴&#xff0c;涨得飞…

将机械手与CodeSys中的运动学模型绑定

文章目录 1.背景介绍2.选定运动学模型3.机械手各尺寸的对应4.总结4.1.选择正确的运动学模型4.2.注意各个关节旋转的正方向。4.3.编码器零点与机械零点的偏移修正。 1.背景介绍 最近搞到了一台工业机械手&#xff0c;虽然这个机械手有自己的控制程序&#xff0c;但是我们还是想…

Java入门基础学习笔记1——初识java

1、为什么学习java&#xff1f; 几乎统治了服务端的开发&#xff1b;几乎所有的互联网企业都使用&#xff1b;100%国内大中型企业都用&#xff1b;全球100亿的设备运行java。开发岗位薪资高。 Java的流行度很高&#xff0c;商用占有率很高。 可移植性。 2、Java的背景知识 …

【基础算法总结】二分查找一

二分查找一 1. 二分查找2.在排序数组中查找元素的第一个和最后一个位置3.x 的平方根4.搜索插入位置 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1…

Java入门基础学习笔记12——变量详解

变量详解&#xff1a; 变量里的数据在计算机中的存储原理。 二进制&#xff1a; 只有0和1&#xff0c; 按照逢2进1的方式表示数据。 十进制转二进制的算法&#xff1a; 除二取余法。 6是110 13是1101 计算机中表示数据的最小单元&#xff1a;一个字节&#xff08;byte&…

【教程向】从零开始创建浏览器插件(三)解决 Chrome 扩展中弹出页面、背景脚本、内容脚本之间通信的问题

第三步&#xff1a;解决 Chrome 扩展中弹出页面、背景脚本、内容脚本之间通信的问题 Chrome 扩展开发中&#xff0c;弹出页面&#xff08;Popup&#xff09;、背景脚本&#xff08;Background Script&#xff09;、内容脚本&#xff08;Content Script&#xff09;各自拥有独立…

word转pdf的java实现(documents4j)

一、多余的话 java实现word转pdf可用的jar包不多&#xff0c;很多都是收费的。最近发现com.documents4j挺好用的&#xff0c;它支持在本机转换&#xff0c;也支持远程服务转换。但它依赖于微软的office。电脑需要安装office才能转换。鉴于没在linux中使用office&#xff0c;本…

hadoop学习---基于Hive的教育平台数据仓库分析案例(二)

衔接第一部分&#xff0c;第一部分请点击&#xff1a;基于Hive的教育平台数据仓库分析案例&#xff08;一&#xff09; 后接第三部分&#xff0c;第三部分请点击&#xff1a;基于Hive的教育平台数据仓库分析案例 (三) 意向用户模块&#xff08;全量分析&#xff09;&#…

用户体验优化uxo指的是什么?

用户体验优化(User Experience Optimization&#xff0c;简称UXO)是一种专注于改善和提升用户在使用企业产品或服务时的整体感受和体验的过程。简单来说&#xff0c;它旨在通过改进产品或服务的设计和功能&#xff0c;使用户在使用过程中感到更加愉悦、满意和高效。用户体验优化…

桌面怎么分类便签 桌面分类便签设置方法

桌面便签&#xff0c;一直是我工作和学习的好帮手。每当灵感闪现或是有待办事项&#xff0c;我都会随手记录在便签上&#xff0c;它们就像我桌面上的小助手&#xff0c;时刻提醒我不要遗漏任何重要事务。 但便签一多&#xff0c;管理就成了问题。一张张五颜六色的便签贴满了我…

C++ 多态的相关问题

目录 1. 第一题 2. 第二题 3. inline 函数可以是虚函数吗 4. 静态成员函数可以是虚函数吗 5. 构造函数可以是虚函数吗 6. 析构函数可以是虚函数吗 7. 拷贝构造和赋值运算符重载可以是虚函数吗 8. 对象访问普通函数快还是访问虚函数快 9. 虚函数表是什么阶段生成的&…

华为与达梦数据签署全面合作协议

4月26日&#xff0c;武汉达梦数据库股份有限公司&#xff08;简称“达梦数据”&#xff09;与华为技术有限公司&#xff08;简称“华为”&#xff09;在达梦数据武汉总部签署全面合作协议。 达梦数据总经理皮宇、华为湖北政企业务总经理吕晓龙出席并见证签约&#xff1b;华为湖…

uniapp、web网页跨站数据交互及通讯

来来来&#xff0c;说说你的创作灵感&#xff01;这就跟吃饭睡觉一样&#xff0c;饿了就找吃的&#xff0c;渴了就倒水张口灌。 最近一个多月实在是忙的没再更新日志&#xff0c;好多粉丝私信说之前的创作于他们而言非常有用&#xff01;受益菲浅&#xff0c;这里非常感谢粉丝…

Ubuntu20.04 设置路由器

1. 网络拓扑图 2. 查看网卡信息 ip a得出如下网卡信息&#xff0c;enp1s0和enp2s0为两个网卡名称&#xff0c;以及相关两个网卡的详细信息&#xff0c;不同设备的网卡名称可能不一样 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group defaul…