上一篇教程写了个Demo实现了打开百度的首页那打开网页肯定是要操作网页的那怎么操作呢一个网页会有很多的元素那我们第一步就肯定是找到要操作的元素了首先我们简单写一个html页面新建一个记事本然后把以下代码复制进去!doctype html html langen head meta charsetUTF-8 meta nameGenerator contentEditPlus® meta nameAuthor content meta nameKeywords content meta nameDescription content titleDocument/title /head body input idun classcss1 nameusername / input idpw classcss2 lala namepassword / input idco classcss3 namecode /br / input typebutton idbtn classcss4 namesubmit value按钮 / script document.getElementById(btn).onclick function(){ alert(haha); } /script /body /html保存然后更改后缀为html这里我存在桌面名称为test.html然后双击它就会用浏览器打开当然如果你默认浏览器是IE的话那么就是使用IE浏览器打开。也是一样的不影响打开以后把地址栏里的地址复制一下贴粘到java代码里替换掉原先写的百度首页的网址然后运行脚本就会使用谷歌浏览器打开测试页面了。那现在这个页面有三个输入框和一个按钮我们现在要操作这几个元素。selenium查找网页元素有好几种方式。在整个页面找那就是用driver.findElement方法。当然也可以在某一个元素里面找。那就是使用元素的findElement方法了。通过eclipse工具我们可以看到查找元素的方法有这么几个className、cssSelector、id、linkText、name、partialLinkText、tagName、xpath。className就是通过元素的class来定位元素。在页面上一个元素是可以有多个class的像我们写的案例第二个input标签 输入框就有css2和lala两个class。所以通过css2和lala都可以定位到这个input。但同时多个标签也可以使用同一个class所以通常情况下通过className来定位元素都是使用driver.findElements方法也就是找出多个元素然后再通过下标获取到想要的元素。使用driver.findElement方法如果有多个也只会返回找到的第一个。cssSelector这个基本可以忽略使用这个方法你得需要一些前端的知识。前端在写css的时候怎么定位一个元素是有一定的语法的而这个方法就是使用css定位元素的语法。比如#aaa .css3这个就表示id为aaa的元素下class为css3的元素。id就是通过元素的id属性来查找元素在一个页面中一个id通常只会定位到一个元素。通过id来查找元素效率是最高的但很多元素通常是没有id的。linkText就是通过a标签之间的文本。来定位a标签。比如我们打开百度的首页右上角这个新闻就是一个a标签。By.linkText(新闻)就可以定位到这个元素。name就是通过元素的name属性来定位元素。通常情况下只有表单元素才会有name属性。partialLinkText顾名思义就是通过a标签的部分文本来定位tagName就是通过标签名来定位元素。xpath就是利用xpath的语法来定位元素。xpath是XML文档定位节点元素的一种语法HTML也是标准的XML文档所以就可以使用xpath来查找HTML文档的元素。通过xpath查找元素效率不是很高。但这也只是以前现在电脑的配置都比较高了。这点性能的影响基本上是可以忽略了。同时现在前端一般都是使用React.js、Vue.js、Angular.js等框架使用这些框架一般都不会给元素加id、name属性。所以通过id、name找元素的方式就很难行得通了这个时候还就得使用万能的xpath。关于xpath的语法规则后面会详细地讲。好了那我们现在就使用这些方法来操作页面的元素代码Test public void test222() throws Exception { // 打开测试页面 driver.get(file:///C:/Users/Administrator/Desktop/test.html); //通过id找到第一个输入框 WebElement un driver.findElement(By.id(un)); //第一个输入框输入aaa un.sendKeys(aaa); //通过className找到第二个输入框 WebElement pw driver.findElement(By.className(lala)); //第二个输入框输入bbb pw.sendKeys(bbb); //通过name找到第三个输入框 WebElement co driver.findElement(By.name(code)); //第三个输入框输入ccc co.sendKeys(ccc); Thread.sleep(2000); //找到页面所有的input标签 ListWebElement inputs driver.findElements(By.tagName(input)); //获取第4个input标签即按钮 WebElement btn inputs.get(3); //点击按钮 btn.click(); Thread.sleep(3000); }这里我只贴了Test部分的代码Before和After部分的代码和之前都是一样的。后面也一直是这样这两部分的代码基本上是固定的。获取到一个web元素之后就可以操作这个web元素通过eclipse可以查看有哪些方法。这里只介绍常用的几个方法。clear这个方法通常用于清空输入框的内容click点击元素findElement、findElements就是在元素里面找子元素了和driver的使用一样getAttribute获取元素的属性。在我们写的案例里面input标签的id、class、name、value等都是属性getTagName获取元素的标签名getText获取标签的文本双标签才有文本。我们写的案例中input是单标签是没有文本的。divasdf/div类似这样的为双标签那么获取它的文本就是asdf。如果标签里面还是子标签子标签是不算作文本的。sendKeys输入内容一般是输入框才会使用这个方法。三个is开头的方法isDisplayed元素是否显示在页面上元素是可以设置为隐藏或是不显示状态的但它在文档里却是存在的。你没看见不代表不存在请记住这句话。isEnabled元素是否可交互也就是我们常说的启用/禁用状态了。isSelected元素是否被选中一般是单选按钮复选按钮及下拉选择框会用到这个判断。欢迎加入测试群91425817一起讨论测试的那此事。
测试开发工程师常见面试题 一.功能测试用例的设计举例:(一).我想要回家,让你给我买一张票,然后设计测试用例答案:1.确定需求(回家回哪,需要什么票,买什么时候的票)2.开始测试2.1功能测试(我去买票&…
新买的原装stlink可能会用不了,或者能用却不稳定,怎么办? 新买的原装stlink可能会用不了,或者能用却不稳定,怎么办? 原因就出在1号引脚未连接所以才会一直连不上 1号引脚是TVCC,是接收电压的引脚,对外不输出电压,主要功能就是接受目标电压以平衡电压 而板子上的电…
46天上线千问办公,陈宇森如何带领阿里在腾讯先发优势下突围? 千问办公上线:多版本同步开放,商业化方案初现7月27日,千问办公官网上线,Windows、macOS Beta版和鸿蒙电脑尝鲜版同步开放下载,不过网页端和钉钉内置版仍需等待。这是陈宇森接任钉钉CEO后46天公开交付的第一款产品。官网…
vue : 无法加载文件 G:\nodejs\node_global\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/? 问题:安装完vue-cli,在命令行下运行报 vue : 无法加载文件 G:\nodejs\node_global\vue.ps1,因为在此系统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID135170 中的 abou t_Execution_Policies。 …
2026北京钻石回收|想高价变现,这几个坑千万别踩 - 奢侈品回收评测 2026北京钻石回收行情大涨!很多人手里闲置钻戒、裸钻终于迎来出手好时机,但90%的人都卖亏了!不是钻石不保值,而是被行业隐形套路、信息差坑走大几千、甚至上万收益!钻石和黄金不同,没有统一单价、一钻一价、专业…
5分钟快速备份QQ空间历史说说的终极完整指南:GetQzonehistory免费工具使用教程 5分钟快速备份QQ空间历史说说的终极完整指南:GetQzonehistory免费工具使用教程 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 你是否曾担心QQ空间里那些珍贵的青春记忆会随…
控件小结 定位控件 使用窗体设计器拖动或者指定Location属性值来进行定位 单击要定位的控件在“属性”窗口中,输入Location属性值(用逗号分隔),以便在窗口内定位该控件 命令控件 Button 用户单击时,调用Click事件处理程序。可以…
PHP反序列化漏洞实战:从魔术方法到POP链构造与防御 1. 项目概述:从一道CTF题看PHP反序列化漏洞的实战利用最近在复盘一些CTF比赛的题目,其中一道来自0xGame的“Rubbish_Unser”题让我印象挺深。这道题本身难度不算顶级,但它非常典型,几乎把PHP反序列化漏洞利用链条中的几个关键“零…
CentOS 安装Docker 报错requires container-selinux >= :.x CentOS 安装Docker 报错requires container-selinux > :.x 的解决办法 1. 问题的出现:一个让人抓狂的报错作为一名运维老手,你肯定遇到过这样的情况:按部就班地执行 yum install docker-ce 命令,满心期待Docker能顺利安装&…
告别臃肿!3步让你的暗影精灵笔记本重获新生 告别臃肿!3步让你的暗影精灵笔记本重获新生 【免费下载链接】OmenSuperHub Control Omen laptop performance, fan speeds, and keyboard lighting, and unlock power limits. 项目地址: https://gitcode.com/gh_mirrors/om/OmenSuperHub 你是否也曾为官方Om…
RAG必踩坑!财报法规检索不准?这款开源工具让答案浮出水面,准确率飙升98.7%! 做 RAG 的人应该都踩过这个致命的坑:把几百页的财报、法规、技术手册扔给向量库,问一个具体问题,搜出来的全是沾边但没用的内容 —— 关键信息要么被硬切块拆碎了,要么藏在几十条结果的最下面。语义相似≠真正相关,这个…
抖音视频文案提取工具全指南:免费2026版、手机App、在线工具一网打尽 2026年做短视频运营,从抖音上扒文案早就不是偷偷抄笔记的事了。我刚开始做内容的时候,每天刷半小时抖音,手动把爆款视频的口播敲进备忘录,一条2分钟的视频得花十来分钟,碰到语速快的还要反复回听。后来试了一圈工具&am…
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集 Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…
智慧飞行 大疆无人机一站式智能管控平台/支持大疆机场/私有化部署 从航线规划、自动飞行、AI识别到数据管理,一个平台全搞定 智慧飞行-大疆无人机一站式智能管控平台/支持大疆机场/私有化部署 企业级全域智能无人机一体化管控平台源码! 专为电力巡检、安防监控、应急救援、测绘勘察等行业打造,让您的无人机舰队实现 “无人化、自动化、智能化” 管理! 🎯 …
揭秘ChatGPT+Mathematica协同教学:为什么92%的初学者在72小时内建立函数直觉? 更多请点击: https://codechina.net 第一章:AI帮助理解数学概念 人工智能正以前所未有的方式重塑数学学习的路径。通过自然语言处理与符号计算的深度融合,AI不仅能解析抽象定义,还能将定理、证明和几何直觉转化为可交互、可验证的…
[C++]内存管理:串顺序存储的内存回收 在串(字符串)的顺序存储中,内存回收的方式取决于字符串的存储方式以及所使用的编程语言和相关库。以下以 C 为例进行说明,因为 C 对内存管理有较为直接的控制。 1. 基于 char 数组的串顺序存储 如果使用普通的 char 数组来存储字…
移动端游戏功耗测试实战:电流、功率、亮度和场景对比 移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…
足球口袋教练 HarmonyOS 离线应用实战(03/20):ArkUI 首页仪表盘搭建 本文是“足球口袋教练 HarmonyOS 离线应用实战”系列第 3 篇。示例项目是一个 HarmonyOS / ArkTS / ArkUI 编写的离线足球训练助手,围绕真实页面、真实截图和可复现操作展开。 本篇要解决的问题 训练 App 的首页不能只展示欢迎语,它要解决“我现在该点哪…