一、定位方法

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---元素定位和操作的更多相关文章

  1. Selenium Web 自动化 - 如何找到元素

    Selenium Web 自动化 - 如何找到元素 2016-07-29 1. 什么是元素? 元素:http://www.w3school.com.cn/html/html_elements.asp ...

  2. 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字

    081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...

  3. 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则

    080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...

  4. 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象

    079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...

  5. 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类

    078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...

  6. 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象

    077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...

  7. 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学

    076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...

  8. appium自动化测试之UIautomatorviewer元素定位

    appium自动化测试之UIautomatorviewer元素定位 标签(空格分隔): uiautomatorviewer元素定位 前面的章节,已经总结了怎么搭建环境,怎样成功启动一个APP了,这里具 ...

  9. Web自动化必会知识:「Web基础、元素定位、元素操作、Selenium运行原理、项目实战+框架」

    1.web 基础-html.dom 对象.js 基本语法 Dom 对象里面涉及元素定位以及对元素的修改.因为对元素操作当中涉及的一些 js 操作,js 基本语法要会用.得要掌握前端的基本用法.为什么要 ...

随机推荐

  1. SQL Server存储过程模拟HTTP请求POST和GET协议

    /****** Object: StoredProcedure [dbo].[sp_http_get] Script Date: 05/23/2020 15:47:09 ******/ SET ANS ...

  2. 用tarjan求LCA板子(比倍增快)

    懒!!直接转载!!!! https://solstice23.top/archives/62

  3. [Unity2d系列教程] 005.Unity如何使用外部触控插件FingerGuesture

    用过Unity的都知道自带的Input.touches并不支持鼠标输入,给我们的调试带来很大的不方便.那么我们会发现其实有很多触控方面的插件,如inputtouches,easy touch,fing ...

  4. [Unity2d系列教程] 004.Unity如何调用ios的方法(SDK集成相关)

    和上一篇类似,我们同样希望Unity能够直接调用IOS底层的代码,那么我们就需要研究怎么去实现它.下面让我来带大家看一个简单的例子 1.创建.h和.m文件如下 .h // // myTest.m // ...

  5. GitHub 热点速览 Vol.22:如何打造超级技术栈

    作者:HelloGitHub-小鱼干 摘要:build-your-own-x,无论是新手还是老手,这都是一个指向标.方向有了,剩下就是时间和实践的事情,收集了大量可用于软件和 Web 开发的 Publ ...

  6. (Java实现) 洛谷 P1106 删数问题

    题目描述 键盘输入一个高精度的正整数NN(不超过250250位) ,去掉其中任意kk个数字后剩下的数字按原左右次序将组成一个新的正整数.编程对给定的NN和kk,寻找一种方案使得剩下的数字组成的新数最小 ...

  7. Java实现 LeetCode 707 设计链表(环形链表)

    707. 设计链表 设计链表的实现.您可以选择使用单链表或双链表.单链表中的节点应该具有两个属性:val 和 next.val 是当前节点的值,next 是指向下一个节点的指针/引用.如果要使用双向链 ...

  8. Java实现 蓝桥杯VIP 算法训练 快速排序

    import java.util.Scanner; public class 快速排序 { public static void main(String[] args){ Scanner sc=new ...

  9. Java实现 蓝桥杯VIP 算法提高 P0402

    算法提高 P0402 时间限制:1.0s 内存限制:256.0MB 猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个.第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前 ...

  10. Java实现 蓝桥杯VIP 算法训练 邮票

    算法训练 邮票 时间限制:1.0s 内存限制:512.0MB 问题描述 给定一个信封,有N(1≤N≤100)个位置可以贴邮票,每个位置只能贴一张邮票.我们现在有M(M<=100)种不同邮资的邮票 ...