这篇文章开始,要介绍web自动化核心的内容,也是最困难的部分了,就是定位元素,并去对元素进行操作。想要对元素进行操作,第一步,也是最重要的一步,就是要找到这个元素,如果连元素都定位不到,后续什么操作都是扯淡。在selenium中查找元素的接口是findElement接口了。findElement接口支持八种查找网页元素的方法,这篇文章就先介绍比较简单方便的三种方法:By id,By Name, By ClassName。

我们还是用百度为例,查看代码的方法呢。我用的是浏览器自带的开发者工具,也就是按“F12”打开的窗口。点击窗口右上角的这个图标,之后鼠标点击网页上你想要对齐操作的部分,打开的窗口就会显示该部分的代码了。例如我们要对百度搜索的输入框进行查找定位。点击完输入框之后可以看到以下代码

图中蓝条中的代码就是我们点击的输入框的代码,展开可以看到这些内容。红色框框所框出来的就是输入框的一些信息。例如id = "kw"  name = "wd" class = "s_ipt"。

同理我们可以找到“百度一下”按钮的信息。得到id = "su"  class = "bg s_btn"。

这里有个要注意的地方。我们可以看到,百度按钮的class中包含了空格。而在By ClassName 方法中,如果Class包含空格,是不能被识别,会报错。所以当所要定位的元素的Class包含空格时,我们就不能使用By ClassName方法对其进行查找操作,而应该换一种方法。

比如我们要往输入框中输入“自动化测试”,并查找。则代码展示如下

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver; public class PageLoadTest { public static void main(String[] args) { System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe"); WebDriver driver = new ChromeDriver(); driver.get("https://www.baidu.com"); driver.findElement(By.id("kw")).sendKeys("自动化测试"); //用By id方法,对输入框进行输入操作 // driver.findElement(By.Name("wd")).sendKeys("自动化测试"); //用By Name方法 // driver.findElement(By.ClassName("s_ipt")).sendKeys("自动化测试") //用By ClassName方法
        driver.findElement(By.id("su")).click();                            //对按钮进行点击操作
} }

上述代码中出现的sendKeys()方法和click()方法在此简单介绍一下。

sendKeys()方法就是给元素输入字符的方法,输入参数一般都是String类型。

click()方法就是模拟鼠标左键点击的操作。

Java + selenium 元素定位(1)之By id/Name/ClassName的更多相关文章

  1. java+selenium元素定位和元素操作

    1.元素定位 ID定位元素: findElement(By.id(“”)); 通过元素的名称定位元素: findElement(By.name(“”)); 通过元素的html中的位置定位元素: fin ...

  2. Java + selenium 元素定位(5)之By Xpath

    这篇关于Xpath方法的文章和之前那篇CSS的方法一样,使用前,需要先掌握一些Xpath的相关知识.当然,网上也有各种工具可以帮助我们获取到元素的Xpath,但是这并不代表着我们就可以不用了解Xpat ...

  3. Java + selenium 元素定位(4)之By CSS

    这篇我要介绍元素定位的倒数第二个方法啦,就是基于CSS的元素定位.关于一些CSS的知识,我这里就不累赘的讲了,以后可能会单独写一篇关于CSS的介绍.当然个人推荐如果之前完全没有CSS只是储备的,可以选 ...

  4. Java + selenium 元素定位(6)之iframe切换(即对富文本框的操作)

    在元素定位中,对富文本框的元素定位是特别的,当我们使用普通的元素定位方法对富文本框进行操作时,我们会发现不管我们之前介绍的八种方法中的任何方法,我们都不能成功定位到富文本框,并对其进行操作.那是因为富 ...

  5. Java + selenium 元素定位(2)之By LinkText/PartialLinkText

    本章介绍的两种方法都是对于网页上的文字链接的定位操作.根据名字,我们就可以看出来,这两者其实很相似,那么他们的不同在哪里呢. By LinkText()方法,是对一个的网页超链接,我们所需要输入的关键 ...

  6. Java Selenium - 元素定位(一)

    一,单个元素对象定位 Webdriver通过findElement() , findElements()等方法调用By对象来定位和查询元素 , findElement()返回一个元素对象,否则抛出异常 ...

  7. Java + selenium 元素定位(3)之By TagName

    本篇介绍findElement接口中的By TagName方法.首先,要知道什么是tagname.之前我们使用F12开发者工具查看网页元素是,发现每行代码前都有<input>.<bo ...

  8. selenium+java二元素定位

    页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法.  测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 自动化测试步骤 定位元素 ...

  9. selenium元素定位(Java)

    1.使用findElement方法定位元素   findElement()方法:当开始寻找符合指定条件的元素时,它将查询整个DOM,然后返回第一个找到的匹配元素.   By id:通过元素ID属性定位 ...

随机推荐

  1. Dp状态设计与方程总结

    1.不完全状态记录<1>青蛙过河问题<2>利用区间dp 2.背包类问题<1> 0-1背包,经典问题<2>无限背包,经典问题<3>判定性背包问 ...

  2. SpringMvc和Mybatis整合需要配置的xml

    applicationContext-dao.xml <?xml version="1.0" encoding="UTF-8"?> <bean ...

  3. python学习第十八天计算机字符编码

    人类语言和计算机语言二进制怎么沟通,最开始字符编码为ascii码对照表 包括数据和字母,没有汉字,中国自己搞了一套自己的编码 gb2312编码后来发展GBK编码,日本,韩国都,甚至台湾也搞自己的编码, ...

  4. 关于自带的sql developer修改java.exe版本的解决办法

    第一次安装oracle11gR2后,就很好奇的点了一下,当点击应用程序开发下的sql developer后,就弹出一个窗口,要选择一个java.exe的路径,我就讲本机中的JDK1.7下的java.e ...

  5. 分布式自增ID算法-Snowflake详解

    1.Snowflake简介 互联网快速发展的今天,分布式应用系统已经见怪不怪,在分布式系统中,我们需要各种各样的ID,既然是ID那么必然是要保证全局唯一,除此之外,不同当业务还需要不同的特性,比如像并 ...

  6. android 好的源码链接

    1.自定义表情键盘:https://github.com/w446108264/XhsEmoticonsKeyboard 2.底部导航栏https://github.com/Ashok-Varma/B ...

  7. webpack中的图片打包之路

    最近在Github上弄项目,需要搭建一个webpack开发环境.Emmm,是的,从0开始搭建一个项目确实不容易,光Webpack的坑就够我踩一路的了.这不,刚搭建到“图片打包”这里,就遇到了麻烦.最后 ...

  8. CSS样式表能否控制文字禁止选择,复制, 焦点

    div中禁止文字被选择 在做div的点击计数事件时,遇到一个小问题. 因为div里面有文字,所以当点击多次时,特别是鼠标点的比较快的时候,文字会被选中. 查了下,用css和javascript可以实现 ...

  9. python 异常处理【转载】

    什么是异常?异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行.一般情况下,在Python无法正常处理程序时就会发生一个异常.异常是Python对象,表示一个错误.当Python脚本 ...

  10. 描述一下JVM加载class文件的原理机制?

    JVM中类的装载是由类加载器(ClassLoader)和它的子类来实现的,Java中的类加载器是一个重要的Java运行时系统组件,它负责在运行时查找和装入类文件中的类. 由于Java的跨平台性,经过编 ...