0.0---selenium+java自动化基础01---元素定位和操作
一、定位方法
1、通过ID定位元素:driver. findElement(By.id(value));
2、通过元素的名称定位元素: driver. findElement(By.name( value));
3、通过元素的class属性定位元素:driver. findElement(By.className( value));
4、通过元素的标签名称定位元素:driver. findElement(By.tagName( value));
5、通过元素的css定位元素:driver. findElement(By.cssSelector( value));
例:findElement(By.cssSelector(“.s_ipt”)) ; -------------------------------点(.)表示通过class属性定位元素
例:findElement(By.cssSelector(“#su”)) ;-------------------------------------#表示通过id属性定位元素
例:findElement(By.cssSelector(“input”));------------------------------------表示通过标签名定位
例:findElement(By.cssSelector(“span>input”)) ;------------------------------通过父子关系定位
例:findElement(By.cssSelector(“input[maxlength=’100’]”));-----------------通过属性+属性值定位,保证唯一性
例:findElement(By.cssSelector(“span.bg s_ipt_wr>input.s_ipt”));---------组合定位(父子+属性),input的class属性值叫s_ipt
6、通过元素的html中的位置路径定位元素:driver. findElement(By.xpath( value));
例:driver.findElement(By.xpath(“/html/body/div/div[2]/div/div/div/from/span[2]/input”));---------绝对路径,2表示第二个div
例:driver. findElement(By.xpath(“//span[@class=’bg s_ipt_wr’]/input));---------------------------相对路径,如果不想指定标签名也可以用星号代替
例:driver. findElement(By.xpath(“//input[@maxlength=’100’]”))--------------------------------------相对路径,元素的任意属性都可以使用,只要它唯一标识。
例:driver.findElement(By.xpath(“//input[@id=’kw’and @class=’su’]/span/input”));---------------相对路径,可使用路基运算符。
7、通过元素的链接名称定位元素:driver. findElement(By.linkText( value));
8、通过元素的部分链接名称定位元素:driver. findElement(By.partialLinkText( value));
二、元素操作
(一)简单的元素操作
1、元素操作
- clear( ):清除文本,如果是一个文件输入框;
- sendKends(value):在元素上模拟按键输入;
- click( ):单击元素;有时候可与click互换使用,submit( )同样可以提交一个按钮。
- submit( ):用于提交表单,特别用于没提交按钮的情况,如:输入关键字后点“回车”。
2、获取元素信息
- getSize( ):返回元素的尺寸
- getAttribute( ):获得属性值
- getTitle( ):获取当前页面的标题
- getCurrentUrl( ):用户获取当前页面的URL
- getText( ):用于获取元素的文本信息
3、判断元素信息
- isDisplayed( ):用于返回一个元素是否可见,可见返回true
- isEnable():用于存储input、select等元素的可编辑状态,可以编辑返回true,否则返回false
- isSelected( ):判断某个元素是否被选中。
(二)鼠标事件
WebDriver中提供了关于鼠标操作的方法:
- contextClick( ):右击
- clickAndHold( ):鼠标悬停
- moveToElement( ):鼠标悬停
- doubleClick( ):双击
- release( ):释放鼠标
- perform( ):执行所有Actions中存储的行为
- dragAndDrop(value1,value2):将values1元素拖放到values2元素的位置
例: Actions action = new Actions(driver);
action.moveToElement(element).perform();
(三)键盘事件
使用键盘按键方法前需要先导入keys类。以下为常用的键盘操作:
sendKeys(Keys.BACK_SPACE) 删除键(BackSpace)
sendKeys(Keys.SPACE) 空格键(Space)
sendKeys(Keys.TAB)
制表键(Tab)
sendKeys(Keys.ESCAPE) 回退键(Esc)
sendKeys(Keys.ENTER) 回车键(Enter)
sendKeys(Keys.CONTROL,'a') 全选(Ctrl+A)
sendKeys(Keys.CONTROL,'c')
复制(Ctrl+C)
sendKeys(Keys.CONTROL,'x') 剪切(Ctrl+X)
sendKeys(Keys.CONTROL,'v') 粘贴(Ctrl+V)
sendKeys(Keys.F1)
键盘F1
……
sendKeys(Keys.F12) 键盘F12
三、界面操作
(一)控制浏览器
1、控制浏览器的大小
- driver.manage( ).window( ).setSize(new Dimension(480,800));
- driver.manage().window().maximize();
2、控制浏览器前进、后退、刷新
- driver.navigate( ).back( );
- driver.navigate( ).forward( );
- driver.navigate().refresh();
(二)界面切换
1、通过id、name、xpath实现多表单切换:driver.switchTo( ).frame( );
例: driver.switchTo( ).frame(“ if ”); ---------------------------------------------------------------id = “if”
driver.switchTo( ).frame(“ nf ”); -------------------------------------------------------------name= “nf”
- WebElement xf=driver.findElement(By.xpath(“//iframe[@id=’if’]”));
- driver.switchTo( ).frame(xf);-------------------------------------------------------------通过xpath定位到iframe
2、返回上一级表单: driver.swithTo().defaultContent();
3、多窗口切换:driver.switchTo().window(handle);---------handle为句柄,通过driver.getWindowHandle()或driver.getWindowHandles()获得
4、警告框处理:Alert alert = driver.switchTo().alert();
- accept(): 点击确认按钮
- dismiss(): 点击取消按钮,如果有的话。
- sendKeys(): 输入值,这个alert/confirm没有对话框就不能用了,不然会报错。
四、其他
1、操作cookies
- getCookies():获取所有的cookie信息
- addCookie(cookie_dict): 添加cookie,必须有name和value值
- deleteAllCookies(): 删除所有的cookie信息
- deleteCookieNamed(String name): 删除name这个cookies
- getCookiesNamed(String name): 返回特定name的cookie值
2、调用JavaScript
- JavascriptExecutor js = (JavascriptExecutor) driver;
- js.executeScript("JS脚本");
例:调用Javascript,操作滑动条;
- ((JavascriptExecutor) driver).executeScript("window.scrollTo(0,document.body.scrollHeight)");
- ((JavascriptExecutor) driver).executeScript("window.scrollTo(0,1000)");
3、时间等待
- driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); //识别元素时的超时时间
- driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS); //页面加载时的超时时间
- driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS); //异步脚本的超时时间
0.0---selenium+java自动化基础01---元素定位和操作的更多相关文章
- Selenium Web 自动化 - 如何找到元素
Selenium Web 自动化 - 如何找到元素 2016-07-29 1. 什么是元素? 元素:http://www.w3school.com.cn/html/html_elements.asp ...
- 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字
081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...
- 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则
080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...
- 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象
079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...
- 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类
078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...
- 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象
077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...
- 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学
076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...
- appium自动化测试之UIautomatorviewer元素定位
appium自动化测试之UIautomatorviewer元素定位 标签(空格分隔): uiautomatorviewer元素定位 前面的章节,已经总结了怎么搭建环境,怎样成功启动一个APP了,这里具 ...
- Web自动化必会知识:「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」
1.web 基础-html.dom 对象.js 基本语法 Dom 对象里面涉及元素定位以及对元素的修改.因为对元素操作当中涉及的一些 js 操作,js 基本语法要会用.得要掌握前端的基本用法.为什么要 ...
随机推荐
- python基础:list与string互转
数据清洗必备技能 https://www.cnblogs.com/yaner2018/p/11162630.html
- 【C#图解教程学习笔记】第13章 委托
13.1 什么是委托 委托是持有一个或多个方法的对象,可将一个方法传递到另一个方法. 委托是用户自定义的引用类型. 13.2 委托概述 类表示的是数据和方法的集合,而委托持有一个或多个方法,以及一系列 ...
- List的扩容机制,你真的明白吗?
一:背景 1. 讲故事 在前一篇大内存排查中,我们看到了Dictionary正在做扩容操作,当时这个字典的count=251w,你把字典玩的66飞起,其实都是底层为你负重前行,比如其中的扩容机制,当你 ...
- SQL——MySQL数据类型
Text类型: Number类型: Date类型:
- NPM的由来——为什么要使用NPM
原文:https://blog.csdn.net/qq_37696120/article/details/80507178 https://blog.csdn.net/hong10086/articl ...
- PHP 调用qq邮箱接口
html代码 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <ti ...
- Thinkphp5 post提交模糊查询带分页如何保留参数
最近做了一个分页的模糊查询post请求,发现查出来的分页点击下一页导致所有的搜索条件被重置,分页效果就失效了. 以下是网上部分解决办法: 控制器代码 public function index($na ...
- 【JavaScript数据结构系列】03-队列Queue
[JavaScript数据结构系列]03-队列Queue 码路工人 CoderMonkey 转载请注明作者与出处 1. 认识队列Queue结构 队列,跟我们的日常生活非常贴近,我们前面举例了食堂排队打 ...
- 报错:The server cannot be started because one or more of the ports are invalid. Open the server editor and correct the invalid ports.
今天重装eclipse和Tomcat,启动时候报标题错“The server cannot be started because one or more of the ports are invali ...
- Jpa使用详解
目录 ORM思想 1.ORM概述 2.为什么要使用ORM 3.常见的ORM框架 JPA简介 1.JPA概述 2.JPA的优势 3.JPA与hibernate的关系 JPA入门案例 1.搭建开发环境 常 ...