selenium元素的定位以及操作

1. 元素的定位

Selenium

自动化,我们需要做的最基本的事情就是在页面找到元素并通过脚本程

序去操作这个元素,实现模拟人工操作。我们有多种定位元素的方式可以选择:

通过元素的

ID定位元素:

findElement(By.id(element));

通过元素的名称定位元素:

findElement(By.name(element));

通过元素的html中的位置定位元素:

findElement(By.xpath(element));

通过元素的标签名称定位元素:

findElement(By.tagName(element));

通过元素的链接名称定位元素:

findElement(By.linkText(element));

通过元素的类名定位元素:

findElement(By.className(element));

通过元素的css定位元素:

findElement(By.cssSelector(element));

通过元素的部分链接名称定位元素:

findElement(By.partialLinkText(element));

2. 元素的操作

不同的元素我们进行不同的操作,按钮的点击、输入框的字符输入、或者是元素的内

容获取,不同的元素我们操作的方式不一。

对ID为element的元素进行点击操作:

driver.findElement(By.id(element)).click();

对ID为element的元素进行发送字符操作:

 driver.findElement(By.id(element)).sendKeys(“XXXXXX”); 

这里只举用的最多且最简单的的两例元素的操作,

还有的是先获取元素后,再单独操作

WebElement text1 = driver.findElement(By.name("password"));
text1.sendKeys("123456");

 3.页面操作

模拟鼠标点击:driver.click();

打开网页:driver.get("https://www.baidu.com");

关闭网页:driver.close();

在输入框中输入内容:text.sendKeys(“”);

清空输入框中的内容:text.clear();

获取输入框中的内容:text.getText();

选择下拉框中的元素:

Select select = new Select(wd.findElement(By.id("select")));

切换到某个frame:

driver.switchTo().frame("");

从一个frame切换到另一个frame:

driver.switchTo().frame("");

切换到某个window:

driver.switchTo().window("windowName");

返回父iframe:(一般在跳转frame之前都写上这个语句)

driver.switchTo().defaultContent();

刷新页面:driver.navigate().refresh();

页面前进后退:

driver.navigate().forward();

driver.navigate().back();

悬停鼠标:

1.5.1输入框(text field or textarea)

WebElement element = driver.findElement(By.id("passwd-id"));

  • element.sendKeys(“test”);//在输入框中输入内容:
  • element.clear();       //将输入框清空
  • element.getText();     //获取输入框的文本内容:

1.5.2下拉选择框(Select)

Select select = new Select(driver.findElement(By.id("select")));

  • select.selectByVisibleText(“A”);
  • select.selectByValue(“1”);
  • select.deselectAll();
  • select.deselectByValue(“1”);
  • select.deselectByVisibleText(“A”);
  • select.getAllSelectedOptions();
  • select.getFirstSelectedOption();

1.5.3单选项(Radio Button)

WebElement radio=driver.findElement(By.id("BookMode"));

  • radio.click();       //选择某个单选项
  • radio.clear();      //清空某个单选项
  • radio.isSelected();  //判断某个单选项是否已经被选择

1.5.4多选项(checkbox)

WebElement checkbox = driver.findElement(By.id("myCheckbox."));

  • checkbox.click();
  • checkbox.clear();
  • checkbox.isSelected();
  • checkbox.isEnabled();

1.5.5按钮(button)

WebElement btn= driver.findElement(By.id("save"));

  • btn.click();      //点击按钮
  • btn.isEnabled ();  //判断按钮是否enable

1.5.7弹出对话框(Popup dialogs)

Alert alert = driver.switchTo().alert();

  • alert.accept();  //确定
  • alert.dismiss();  //取消
  • alert.getText(); //获取文本

1.5.8表单(Form)

  Form中的元素的操作和其它的元素操作一样,对元素操作完成后对表单的提交可以:

  WebElement approve = driver.findElement(By.id("approve"));

  approve.click();

  approve.submit();//只适合于表单的提交

1.5.9上传文件

上传文件的元素操作:

  WebElement adFileUpload =driver.findElement(By.id("WAP-upload"));

  String filePath = "C:\test\\uploadfile\\media_ads\\test.jpg";

  adFileUpload.sendKeys(filePath);

1.6  Windows 和 Frames之间的切换

  • driver.switchTo().defaultContent();     //返回到最顶层的frame/iframe
  • driver.switchTo().frame("leftFrame");    //切换到某个frame:
  • driver.switchTo().window("windowName"); //切换到某个window

1.7  调用Java Script

Web driver对Java Script的调用是通过JavascriptExecutor来实现的,例如:

JavascriptExecutor js = (JavascriptExecutor) driver;

js.executeScript("JS脚本");

1.8  超时设置

WebDriver driver = new FirefoxDriver();

  • driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);      //识别元素时的超时时间
  • driver.manage().timeouts().pageLoadTimeout(10, TimeUnit.SECONDS);  //页面加载时的超时时间
  • driver.manage().timeouts().setScriptTimeout(10, TimeUnit.SECONDS);  //异步脚本的超时时间

自动化测试selenium+java 第一章的更多相关文章

  1. 自动化测试selenium+java 第二章

    1.设置等待时间 Thread.sleep(2000); (1000代表1s) 2.断言assertion: 验证应用程序的状态是否同所期望的一致. 常见的断言包括:验证页面内容,如标题是否为X或当前 ...

  2. “全栈2019”Java第一章:安装JDK11(Mac)

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 文章原文链接 “全栈2019”Java第一章:安装JDK11(Mac) 下一章 “全栈2019”Java ...

  3. 《零成本实现Web自动化测试--基于Selenium》第一章 自动化测试基础

    第一篇 Selenium 和WebDriver工具篇 第一章 自动化测试基础 1.1    初识自动化测试 自动化测试有两种常见方式 1.1.1 代码驱动测试,又叫测试驱动开发(TDD) 1.1.2 ...

  4. Java 第一章 初识Java

    第一章笔记 什么是计算机程序:算机为完成某些功能生产的一系列有序指令集合 Java技术包括: java SE:标准版 java EE:企业版 Java ME:移动版 开发Java程序步骤:1.编写 2 ...

  5. <自动化测试方案_1>第一章、为什么要做自动化测试?(Why)

    第一章.为什么要做自动化测试?(Why) 测试的产品分为:桌面程序(C/S).web应用(B/S) 我们的产品是B/S (一)迭代中省去人力测试非新增功能: 在项目中由于测试时间的限制,测试中只能实现 ...

  6. Java第一章

    第一章 计算机程序:计算机为完成某些功能产生的一系列有序指令集合. Java技术包括:JavaSE(标准版)  JavaEE(企业版) ---JavaME(移动版) 开发Java程序步骤:1.编写 2 ...

  7. 20165233 Java第一章学习总结

    20165233 2017-2018-2 <Java程序设计>第一周学习总结 教材学习内容总结 第一章 Java特点:语法简单.面向对象.与平台无关.动态. 字节码不能被任何平台直接识别. ...

  8. Java第一章----Java概述+环境搭建

    写在前面的话: Java基础的东西看过好几遍,但是过一段都就忘记了,所以这次我决定花费一些时间整理一个系列博客供以后方便查阅.此系列根据Java编程思想+Java核心技术两本书整理而来,这两本书也是我 ...

  9. 自动化测试selenium+java 第三章

    import java.sql.Time;import java.util.concurrent.TimeUnit; import org.junit.BeforeClass;import org.o ...

随机推荐

  1. trie树---(插入、删除、查询字符串)

    HDU   5687 Problem Description 度熊手上有一本神奇的字典,你可以在它里面做如下三个操作:  1.insert : 往神奇字典中插入一个单词  2.delete: 在神奇字 ...

  2. SQL索引学习-聚集索引

    这篇接着我们的索引学习系列,这次主要来分享一些有关聚集索引的问题.上一篇SQL索引学习-索引结构主要是从一些基础概念上给大家分享了我的理解,没有实例,有朋友就提到了聚集索引的问题,这里列出来一下: 其 ...

  3. couchbase单向同步

    我们知道,couchbase默认情况下就是N主的HA模式,bucket同时存储在多个节点中.如下所示: 但事实上,有些时候我们希望某些节点只能读,不能写以避免各种副作用以及分布式系统下出于管理和安全性 ...

  4. window下从硬盘安装linux系统iso镜像文件的方法

    首先,需要安装grub2win,http://sourceforge.net/projects/grub2win/ 其次,将iso文件放在grub2可识别的分区, 如c:\abc\iso.iso 最后 ...

  5. margin和padding对行内元素的影响

    这个是在面试的时候,面试官问我的一个小问题 自己没有考虑过inline元素设置margin和padding的问题 学习的过程记录下来 1)inline元素的高度是由元素的内容决定的(字体的大小和行高) ...

  6. IOS6学习笔记(二)

    四.使用关联引用为分类添加数据 虽然不能在分类中创建实例变量,但是可以创建关联引用(associative reference).通过关联引用,你可以向任何对象中添加键-值(key-value)数据. ...

  7. 浅谈React受控与非受控组件

    背景 React内部分别使用了props, state来区分组件的属性和状态.props用来定义组件外部传进来的属性, 属于那种经过外部定义之后, 组件内部就无法改变.而state维持组件内部的状态更 ...

  8. 【使用 DOM】使用 DOM 元素

    1. 使用元素对象 HTMLElement对象提供了一组属性,可以用它们来读取和修改被代表的数据.下表介绍了这些属性. 下面代码展示了如何使用表中所列的一些基本属性. <!DOCTYPE htm ...

  9. 被混淆的C#类库的反编译

    今天看公司以前的代码,用的是.NRT Reactor v4.4.7.5进行的混淆,直接使用.NET Reflector v8.5.0.179 是无法查看的,提示:Invalid number of d ...

  10. Android 6.0权限管理

    Android 6.0权限管理 关于权限管理 Android6.0 发布之后,Android 的权限系统被重新设计.在 23 之前 App 的权限只会在用户安装的时候询问一次,App一旦安装后就可以使 ...