很多想要做软件测试的小伙伴们可能会被 python 自动化测试多好多好,自动化测试必须学 python 这种话给误导。其实,自动化测试并不一定要会使用 python,因为 python 最强大的自动化测试框架之一——Selenium 也可以使用 java 进行脚本编写,那么 java 自动化测试脚本怎么写呢?且听小编娓娓道来。
阅前须知:
建议初学者们先系统地学习完java编程课再进行该框架的学习:
Selenium配置可以参考这篇文章:selenium—自动化测试利器的安装配置
创建webdriver对象
使用如下代码,创建一个webdriver对象,才能进行接下来的操作。
WebDriver driver
= new ChromeDriver();
从定位元素开始
Selenium 有八种定位方式,分别为 id 定位,name 定位,class 定位,tag 定位,link 定位,partial 定位,css 定位和 Xpath 定位,其中 Xpath 定位使用比较广泛,小编接下来使用 Xpath 定位进行演示:
driver.findElement(By.xpath("//*[@id='nav']/div/ul/li[2]")).click();
driver 下面有 findElement()
方法可以获取一个 html 元素,获取到这个元素后可以使用 click()
方法点击这个元素。findElement()
方法里面可以使用 By.xpath()
进行 Xpath 的选择。关于 Xpath 的教程可以参考:Xpath教程
浏览器控制
//最大化窗口
driver.manage().window().maximize();
//控制页面后退
driver.navigate().back();
//控制浏览器前进
driver.navigate().forward();
//控制页面刷新
driver.navigate().refresh();
//跳转到指定页面
driver.get("https://www.zijiebao.com/tutorial");
鼠标事件
WebElement search_setting = driver.findElement(By.xpath("//*[@id='u']/a[2]"));
//使用Xpath定位到百度搜索页面的设置按钮
Actions action = new Actions(driver);//新建一个action对象
action.clickAndHold(search_setting).perform();//使用action对象的clickAndHold可以实现在目标上进行悬停操作
//一定要加perform()才能执行代码
action.contextClick(search_setting).perform();//鼠标右键点击目标对象
action.doubleClick(search_setting).perform();//鼠标双击目标对象
键盘事件
WebElement search_text = driver.findElement(By.id("kw"));
//定义一个webelement元素名为search_text与页面id为kw的元素进行挂钩
search_text.sendKeys("Java");
//使用search的sendkeys向与其挂钩的元素发送字符串“java”
search_text.clear();
//清空这个元素的模拟文本
等待
try {
Thread.sleep(2000);//使用sleep方法可以暂时挂起线程,但必须要用try-catch语句包裹
} catch (InterruptedException e) {
e.printStackTrace();
}
上述代码合成:
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
public class test {
public static void main(String[] args) {
/**如果报错说找不到Chromedriver的话(即驱动没有配进环境变量),就使用如下代码
* System.setProperty("webdriver.chrome.driver", "Chromedriver的驱动路径");
*/
//创建一个webdriver对象
WebDriver driver = new ChromeDriver();
//使用webdriver对象访问w3Cschool
driver.get("https://www.zijiebao.com/");
//使用Xpath方法获取页面上一个元素的定位,使用click方法为点击这个元素
driver.findElement(By.xpath("//*[@id='nav']/div/ul/li[2]")).click();
driver.manage().window().maximize();//最大化窗口
driver.navigate().back();//控制页面后退
driver.navigate().forward();//控制浏览器前进
driver.navigate().refresh();//控制页面刷新
driver.get("https://www.baidu.com/");//跳转到百度
WebElement search_text = driver.findElement(By.id("kw"));
//定义一个webelement元素名为search_text与页面id为kw的元素进行挂钩
search_text.sendKeys("W3Cschool");
try {
Thread.sleep(2000);//使用sleep方法可以暂时挂起线程,但必须要用try-catch语句包裹
} catch (InterruptedException e) {
e.printStackTrace();
}
//使用search的sendkeys向与其挂钩的元素发送字符串“java”
search_text.clear();
//清空这个元素的模拟文本
WebElement search_setting = driver.findElement(By.xpath("//*[@id='u']/a[2]"));
//使用Xpath定位到百度搜索页面的设置按钮
Actions action = new Actions(driver);//新建一个action对象
action.clickAndHold(search_setting).perform();//使用action对象的clickAndHold可以实现在目标上进行悬停操作
//一定要加perform()才能执行代码
action.contextClick(search_setting).perform();//鼠标右键点击目标对象
action.doubleClick(search_setting).perform();//鼠标双击目标对象
driver.quit();//关闭浏览器对象
}
}
小结
掌握了以上的操作,就算是基本入门 selenium 了。由于篇幅原因,小编只能简单地挑一些比较简单的 selenium 的基础操作进行讲解,后续小编还会继续介绍该框架,希望各位看官大大多多捧场。