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 基本语法要会用.得要掌握前端的基本用法.为什么要 ...
随机推荐
- Web-Security-Learning
Web Security sql注入 MySql MySQL False 注入及技巧总结 MySQL 注入攻击与防御 sql注入学习总结 SQL注入防御与绕过的几种姿势 MySQL偏门技巧 mysql ...
- 自定义realm实现授权
对用户和权限封装 更具用户查询已经拥有的角色 实现类 根据用户查询已经拥有的权限
- JAVA-Servlet操纵方法
此篇自用查询 存储数据的区域对象域对象的通用的方法:ServletContext context=getServletContext();获取ServletContext对象setAtrribute( ...
- arch 系列manjaro更新deepin-screenshot没有图标
问题描述 deepin软件安装到其他分支后,这个问题出现,相信各位一点都不意外,原因不细说,简单的概括就是没有DDE的桌面环境!! 简单介绍 deepin-screen截图软件在使用的时候是深受国人的 ...
- unicode 的中文字符串,调用 isalnum()返回的是 True ?
描述 Python isalnum() 方法检测字符串是否由字母和数字组成. 语法 isalnum()方法语法: str.isalnum() 返回值 如果 string 至少有一个字符并且所有字符都是 ...
- CORS漏洞利用检测和利用方式
CORS全称Cross-Origin Resource Sharing, 跨域资源共享,是HTML5的一个新特性,已被所有浏览器支持,不同于古老的jsonp只能get请求. 检测方式: 1.curl访 ...
- 12 . Python3之网络编程
互联网的本质 两台计算机之间的通信与两个人打电话原理是一样的. # 1. 首先要通过各种物理连接介质连接 # 2. 找准确对方计算机(准确到软件)的位置 # 3. 通过统一的标准(一般子协议)进行数据 ...
- Java 第十一届 蓝桥杯 省模拟赛 小明植树(DFS)
小明植树 题目 问题描述 小明和朋友们一起去郊外植树,他们带了一些在自己实验室精心研究出的小树苗. 小明和朋友们一共有 n 个人,他们经过精心挑选,在一块空地上每个人挑选了一个适合植树的位置,总共 n ...
- Java实现蓝桥杯基础练习特殊回文数
基础练习 特殊回文数 时间限制:1.0s 内存限制:512.0MB 提交此题 锦囊1 锦囊2 问题描述 123321是一个非常特殊的数,它从左边读和从右边读是一样的. 输入一个正整数n, 编程求所有这 ...
- Java实现 LeetCode 220 存在重复元素 III(三)
220. 存在重复元素 III 给定一个整数数组,判断数组中是否有两个不同的索引 i 和 j,使得 nums [i] 和 nums [j] 的差的绝对值最大为 t,并且 i 和 j 之间的差的绝对值最 ...