Java+Selenium3方法篇5-findElement之By id


前面文章介绍了一些driver操作浏览器设置的一些接口,其中接口里面的一些方法,我们经常用到。现在开始介绍一些和元素相关的接口或者方法,web自动化测试的核心就是找到网页元素,并相应去操作元素。所以,我们接下来很大的文章篇幅都和元素查找和元素操作有关。要操作元素,先要找到元素,Selenium中findElement接口能支持八种方法去查找网页元素,今天这里,介绍By id的方法。

       在开始介绍By id之前,我先提下,如何去查找findElement接口的源码,前面有一篇文章介绍了Eclipse上如何查看Selenium源码。其实前面文章介绍不够完整,只是介绍了如何查看Selenium相关接口或者方法的声明,更多的是接口文档形式,读了之后,你可以知道哪些方法有哪些作用。如果要看真正的java源码,今天这篇文章就可以满足你的要求。

在测试代码中的driver.findElement,通过前面介绍的方法,进入到WebDriver.java这个文件,搜索找到 findElement()这个接口,然后按照如下图的方法进入实现代码的文件。

接下来,点击RemoteWebDriver

1. 如何查看某一个接口的实现代码。

进入如下图

如果你还想看看By这个类如何实现的,你继续Ctrl,然后鼠标悬停在By 这个单词,选择进入源码。

这里我们选择查看ById这个方法。

       这段代码意思是:方法返回是WebElement类型,参数context是SearchContext类的一个实例。现判断,如果参数是 FindsById的一个实例,那么就调用FindsById里面的方法去返回这个WebElement,如果if里面表达式为False,那么这里就调用XPath里面的@id的方法去找元素,并返回这个WebElement。XPaht的相关知识,后面会介绍。如果你还想看findElementById(id)的方法,你按照上面的方法继续去查找相关源码。

       回到findElement这个接口,里面的各种找元素的方法,返回的都是一个列表,元素就存储在这个列表里。driver这个浏览器实例对象调用了findElement方法,就把元素返回给driver这个实例,然后才可以去操作元素。关于如何查找元素的id和XPath,我推荐你去看一下我之前写过的一篇文章,点击这里。简单来说,就是在火狐浏览器上,先安装firebug插件,然后安装firepath插件,就可以了。我们这里用百度首页,搜索输入框定位来介绍如何查找这个元素的id,直接看图。

上面红圈的kw就是百度首页文本输入框对应元素的id。

用Java来写这个元素查找并输入关键字“Java”的脚本如下。

  1. package lessons;  
  2.   
  3.   
  4. import org.openqa.selenium.By;  
  5. import org.openqa.selenium.WebDriver;  
  6. import org.openqa.selenium.chrome.ChromeDriver;  
  7.   
  8.   
  9. public class PageLoadTest {  
  10.       
  11. public static void main(String[] args) {  
  12.           
  13.         System.setProperty("webdriver.gecko.driver"".\\Tools\\chromedriver.exe");  
  14.           
  15.         WebDriver driver = new ChromeDriver();  
  16.           
  17.         driver.get("https://www.baidu.com");  
  18.       
  19.         //By id 查找元素  
  20.         driver.findElement(By.id("kw")).sendKeys("Java");  
  21.           
  22.     }  
  23.   
  24. }  
package lessons;


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.gecko.driver", ".\\Tools\\chromedriver.exe");
		
		WebDriver driver = new ChromeDriver();
		
		driver.get("https://www.baidu.com");
	
		//By id 查找元素
		driver.findElement(By.id("kw")).sendKeys("Java");
		
	}

}
       运行一下,观察效果。上面脚本中的sendKeys()方法,我们再后边文章会介绍,如果网页元素是一个可以输入的文本框,就可以调用这个方法去实现,把你想要输入的字符串输入到该文本框内。

关于findElement()中的By.id方式就介绍到这里,下一篇介绍By.XPath

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值