Selenium基础知识

一、环境搭建(以java为例)

1.下载chrome浏览器

https://www.google.cn/intl/zh-CN/chrome/

2.查看chrome浏览器版本

设置+关于chrome

3.下载chrome浏览器驱动

下载浏览器对应版本的

ChromeDriver - WebDriver for Chrome - Downloads

120以上版本:Chrome for Testing availability

4.配置环境变量

点击我的电脑/此电脑>>右键点击属性>>点击高级系统设置>>环境变量>>系统变量。

点击系统变量中的path,点击新增,并将驱动的安装目复制填入后,点击确定。

5.Java创建项目,添加pom文件中添加依赖

<dependencies><!-- https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java --><dependency><groupId>org.seleniumhq.selenium</groupId><artifactId>selenium-java</artifactId><version>3.141.59</version></dependency>
</dependencies>
import org.openqa.selenium.chrome.ChromeDriver;public class Main {public static void main(String[] args) {WebDriver webDriver = new ChromeDriver();}
}

二、元素定位

1.CSS选择

(1)类选择器

class=""

webDriver.findElement(By.cssSelector(".前端样式类名"));

(2)id选择器

webDriver.findElement(By.cssSelector("#前端样式类名"));

(3)标签选择器

标签名作为定位

2.xpath

webDriver.findElement(By.xpath("//*[@id=\"s-top-left\"]/a[1]")).click();

(1)绝对路径

(2)相对路径

    相对路径+索引  

    相对路径+属性值

    相对路径+通配符

    相对路径+文本匹配

3.css选择器 vs xpath

CSS选择器定位元素效率高

三、操作测试对象

1.click

点击对象

webDriver.findElement(By.cssSelector("#kw")).click();

2.send_key

在对象上模拟按键输入

webDriver.findElement(By.cssSelector("#kw")).sendKeys("你好");

3.clear

清除对象输入的文本内容

4.submit

提交  

点击元素需是在form标签内

5.text

获取元素文本信息

四、等待

1.sleep(等待时间)

强制等待

2.隐式等待

最长等待某个时间点,获取到页面元素,就执行下面代码,如果这个时间还没有找到元素就报错。

WebDriverWait wait= new WebDriverWait(webDriver,3000);

五、打印信息

1.title

获取title

String title= webDriver.getTitle();

2.获取url

String url= webDriver.getCurrentUrl();

六、浏览器操作

1.浏览器最大化

webDriver.manage().window().maximize();

2.设置浏览器大小

 webDriver.manage().window().setSize(new Dimension(长度,宽度));

3.浏览器前进和后退

后退

webDriver.navigate().back();

前进

webDriver.navigate().forward();
webDriver.navigate().to("网址");

等同于 webDriver.get();

4.滚动条

((JavascriptExecutor)webDriver).executeScript("document.documentElement.scrollTop=10000");

5.关闭浏览器

webDriver.quit();
webDriver.close();

区别:

1.quit关闭整个浏览器,close关闭当前页面

2.quit清空缓存,close不会清空缓存

七、键盘按键

1.键盘按键使用

webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL);

2.组合键使用

webDriver.findElement(By.cssSelector("#kw")).sendKeys(Keys.CONTROL,"A");

八、鼠标事件

//创建 Actions
Actions action=new Actions(webDriver);//找到按钮
WebElement target= webDriver.findElement(By.cssSelector(".a3"));//鼠标移动到这个按钮
action.moveToElement(target).contextClick().perform();

九、选择框

List <WebElement> webElements=webDriver.findElements(By.cssSelector("input"));for(int i=0;i<webElements.size();i++){//getAttribute获取页面上的元素属性if(webElements.get(i).getAttribute("type").equals("radio")){webElements.get(i).click();}}

十、上传文件

webDriver.get("");
webDriver.findElement(By.xpath("/html/body/input")).sendKeys("上传文件名");

十一、frame

webDriver.switchTo().frame("id名");

十二、下拉框

 WebElement webElement= webDriver.findElement(By.cssSelector("#ShippingMethod"));Select select=new Select(webElement);select.selectByIndex(1);select.selectByValue("8.34");

十三、alert、confirm、prompt 的处理

text 返回alert/confirm/prompt 中的文字信息
accept 点击确认按钮
dismiss 点击取消按钮,如果有的话
send_keys 输入值,如果alert 没有对话框就不能用了,不然会报错

//输入弹窗
webDriver.switchTo().alert().sendKeys("name");//点击确定webDriver.switchTo().alert().accept();//点击取消webDriver.switchTo().alert().dismiss();

十四、窗口切换

 //当前窗口句柄String cur_handle=webDriver.getWindowHandle();//当前浏览器当前所有句柄Set<String> all_handles=webDriver.getWindowHandles();String target="";for(String temp :all_handles){target=temp;}//切换窗口句柄webDriver.switchTo().window(target);

十五、截图

下载依赖

<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.11.0</version>
</dependency>
 File file=((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
//file保存磁盘FileUtils.copyFile(file,new File("保存路径"));

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

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

相关文章

WordPress使用

WordPress功能菜单 仪表盘 可以查看网站基本信息和内容。 文章 用来管理文章内容&#xff0c;分类以及标签。编辑文章以及设置分类标签&#xff0c;分类和标签可以被添加到 外观-菜单 中。 分类名称自定义&#xff1b;别名为网页url链接中的一部分&#xff0c;最好别设置为中文…

概率密度函数(PDF)与神经网络中的激活函数

原创:项道德(daode3056,daode1212) 在量子力学中&#xff0c;许多现象都是统计的结果&#xff0c;基本上用的是正态分布&#xff0c;然而&#xff0c;从本质上思考&#xff0c;应该还存在低阶的分布&#xff0c;标准的正态分布是它的极限&#xff0c;这样一来&#xff0c;或许在…

【前端素材】推荐优质后台管理系统Spica Admin平台模板(附源码)

一、需求分析 后台管理系统是一种用于管理网站、应用程序或系统的工具&#xff0c;它通常作为一个独立的后台界面存在&#xff0c;供管理员或特定用户使用。下面详细分析后台管理系统的定义和功能&#xff1a; 1. 定义 后台管理系统是一个用于管理和控制网站、应用程序或系统…

vue3 toRefs之后的变量修改方法

上效果 修改值需要带上解构之前的对象名obj&#xff0c; changeName:()>{ // toRefs 解决后变量修改值方法&#xff1a; 解构前变量.字段新值 obj.name FEIFEI; } } 案例源码 <!DOCTYPE html> <html> <head><me…

Vue | (四)使用Vue脚手架(上) | 尚硅谷Vue2.0+Vue3.0全套教程

文章目录 &#x1f4da;初始化脚手架&#x1f407;创建初体验&#x1f407;分析脚手架结构&#x1f407;关于render&#x1f407;查看默认配置 &#x1f4da;ref与props&#x1f407;ref属性&#x1f407;props配置项 &#x1f4da;混入&#x1f4da;插件&#x1f4da;scoped样…

idea配置javafx

一、下载sdk 在jdk8之后,需要下载sdk包 📎javafx-sdk-18.zip 这里适用的jkd版本如图 二、配置 创建一个项目之后,进行如下配置,将sdk导入到项目中 配置启动参数 可以使用-号将之前的去掉&

同步 BUCK 与 异步 BUCK 的区别

上篇文章介绍 BUCK 基本拓扑电路工作原理&#xff0c;BUCK 电路如下图&#xff1a; 因为二极管的存在&#xff0c;只需要控制一个 MOS 管开关&#xff0c;一般将该电路称为异步 BUCK 电路&#xff0c;如果把这个二极管换为 MOS 管&#xff0c;如下图&#xff1a; 该电路用到了两…

vue Threejs实现任意画线(鼠标点击画线)

Threejs实现任意画线(鼠标点击画线) 鼠标左键单击添加点鼠标右键回退到上一个点,并继续画按住shift可以画平行于x轴或平行于z轴的线按Esc完成画线

前后端分离vscode保险业务管理系统vue+Nodejs

本设计主要应用于完成对保险业务进行计算机化的管理。系统前台展示各种种类的保险&#xff0c;顾客可以选择登陆后买入。公司员工为管理员&#xff0c;由公司统一分配账号&#xff0c;员工用工号密码登陆。可以修改密码&#xff0c;查看、修改自己的信息。员工可处理顾客信息。…

企微hook框架

https://wwm.lanzoum.com/ipUTp1ot1twh 密码:hvev 免费的企微框架 支持文本消息&#xff0c;图片消息&#xff0c;视频消息&#xff0c;文件消息。 其他可自行下载测试。 有兴趣可以进群交流。720192224 BOOL WxWorkSendData(string data) { WX_GETOBJDATA ob…

1.CSS单位总结

CSS 单位总结 经典真题 px 和 em 的区别 CSS 中的哪些单位 首先&#xff0c;在 CSS 中&#xff0c;单位分为两大类&#xff0c;绝对长度单位和相对长度单位。 绝对长度单位 我们先来说这个&#xff0c;绝对长度单位最好理解&#xff0c;和我们现实生活中是一样的。在我们…

mysql-MVCC

一、基础概念 1. MVCC的含义 MVCC (Multiversion Concurrency Control)&#xff0c;即多版本并发控制技术&#xff0c;它是通过读取某个时间点的快照数据&#xff0c; 来降低并发事务冲突而引起的锁等待&#xff0c; 从而提高并发性能的一种机制. MVCC 的实现,是通过保存数据…

汽车常识网:电脑主机如何算功率的计算方法?

今天汽车知识网就给大家讲解一下如何计算一台主机的功率。 它还会解释如何计算计算机主机所需的功率&#xff1f; &#xff1f; &#xff08;如何计算电脑主机所需的功率&#xff09;进行说明。 如果它恰好解决了您现在面临的问题&#xff0c;请不要忘记关注本站。 让我们现在就…

勒索组织再次盯紧制造业!亚信安全发布《勒索家族和勒索事件监控报告》

本周态势快速感知 本周全球共监测到勒索事件104起&#xff0c;事件数量有所下降。 lockbit3.0仍然是影响最严重的勒索家族&#xff1b;hunters和play也是两个活动频繁的恶意家族&#xff0c;需要注意防范。 本周8base勒索组织窃取安索杰国际贸易公司大量文件&#xff0c;包括…

谷歌掀桌子!开源Gemma:可商用,性能超过Llama 2!

2月22日&#xff0c;谷歌在官网宣布&#xff0c;开源大语言模型Gemma。 Gemma与谷歌最新发布的Gemini 使用了同一架构&#xff0c;有20亿、70亿两种参数&#xff0c;每种参数都有预训练和指令调优两个版本。 根据谷歌公布的测试显示&#xff0c;在MMLU、BBH、GSM8K等主流测试…

解密C语言选择结构:掌握条件语句与分支逻辑的利器

引言 C语⾔是结构化的程序设计语⾔&#xff0c;这⾥的结构指的是顺序结构、选择结构、循环结构。为什么有着三种结构呢&#xff0c;大家其实可以想象一下&#xff0c;生活中的绝大数事情都可以抽象着三种结构&#xff0c;而我们今天要给大家介绍的就是三大结构之一——选择结构…

Jenkins 中部署Nodejs插件并使用,并构建前端项目(3)

遇到多个版本nodeJS需要构建的时候 1、第一种就是一个配置安装&#xff0c;然后进行选中配置 2、第二种就是插件&#xff1a;nvm-wrapper&#xff0c;我们还是选用NodeJS插件&#xff1a; &#xff08;1&#xff09;可以加载任意npmrc文件&#xff1b; &#xff08;2&#x…

鸿蒙NEXT出现有前途吗?是否会和安卓、IOS开发历程一样?

只要有手机操作系统这玩意存在&#xff0c;一定是需要原生开发人员的&#xff0c;但随着独立操作系统越来越多的话&#xff0c;混合App开发可能是个“万能解决方案”。 2024年&#xff0c;在中国&#xff0c;被各大媒体和开发者称为“鸿蒙元年”。 在2023年底就有业内人士透露…

常见锁策略,CAS,synchrodized原理讲解

&#x1f3a5; 个人主页&#xff1a;Dikz12&#x1f4d5;格言&#xff1a;那些在暗处执拗生长的花&#xff0c;终有一日会馥郁传香欢迎大家&#x1f44d;点赞✍评论⭐收藏 目录 常见锁策略 乐观锁和悲观锁 轻量级锁和重量级锁 自旋锁和挂起等待锁 读写锁 公平锁和非公平锁…

Transformer 架构—Encoder-Decoder

文章目录 前言 一、Encoder 家族 1. BERT 2. DistilBERT 3. RoBERTa 4. XML 5. XML-RoBERTa 6. ALBERT 7. ELECTRA 8. DeBERTa 二、Decoder 家族 1. GPT 2. GPT-2 3. CTRL 4. GPT-3 5. GPT-Neo / GPT-J-6B 三、Encoder-Decoder 家族 1. T5 2. BART 3. M2M-100 4. BigBird 前言 …