1、自动化测试:将人为的测试行为转化为机器执行的过程。
2、为什么要进行自动化测试:解决回归测试;解决压力测试;解决兼容性测试;提高测试效率,保证产品质量。
3、selenium简介:selenium是一个用于Web应用程序测试的工具。
4、selenium功能特性:selenium是一个开源和可移植的Web测试框架;selenium IDE为创作测试提供了回放和录制功能;selenium支持各种操作系统,浏览器和编程语言。
5、selenium局限性:selenium不支持桌面应用程序的自动化测试;无法使用selenium对Web服务执行自动化测试;无法对图像执行测试。selenium没有任何内置的报告功能,必须依赖JUnit和TestNG等插件来获取测试报告。
6、selenium IDE简介:是Selenium Suite下开源的Web自动化测试工具。
7、第一个测试:
执行:
解决报错:



![]()
8、Selenium WebDriver简介:提供了各种语言环境的API来支持编写符合标准软件开发实践的应用程序,支持Java、Python等编程语言进行自动化测试脚本编写。
9、Selenium WebDriver常用命令
1.获取网页:get()方法和navigate()方法。
driver.get("www.baidu.com");
driver.navigate().to("www.baidu.com");
2.查找表单并发送用户输入:fd.findElement(By.id("kw")).sendKeys("京东");
3.清除用户输入:clear()方法。
driver.findElement(By.name("wd")).clear();
4.使用getText()方法来获取通过任何web元素写入的数据。
fd.findElement(By.id("kw")).getText();
5.click()方法方法用于对任何Web元素执行单击操作。
fd.findElement(By.linkText("新闻")).click();
6.在浏览器历史记录中向后导航:driver.navigate().back();
7.在浏览器历史中记录中向前导航:driver.navigate().forward();
8.刷新/重新加载页面:driver.navigate().refresh();
9.关闭浏览器:driver.close();
10.关闭浏览器和与驱动程序关联的其他所有窗口:driver.quit();
11.在 Windows 之间移动:driver.switchTo().window("windowName");
12.在 frame 之间移动:driver.switchTo().frame("frameName");
10、基本元素定位
根据 id 来获取元素,id值是唯一的;
根据元素 name 属性获取元素;
根据元素的标签名(tagName)来获取元素;
根据元素的样式class值(className)来获取元素;
根据超链接的文本值(linkText)来获取元素;
根据超链接的部分文本值(partialLinkText)啦获取元素;
根据xpath定位:是一个path(路径),相当于元素的坐标;
private static FirefoxDriver fd;
public static void main(String[] args) {
openFireFox();
//id定位
//fd.findElement(By.id("kw")).sendKeys("京东");
//name定位
//fd.findElement(By.name("wd")).sendKeys("京东");
//tagName定位
//fd.findElement(By.tagName("input")).sendKeys("京东");
//className定位
//fd.findElement(By.className("s_ipt")).sendKeys("京东");
//复合类名的问题
//fd.findElement(By.className("s_btn")).click();
//LinkText定位
//fd.findElement(By.linkText("新闻")).click();
//partialLinkText定位
//fd.findElement(By.partialLinkText("新")).click();
//cssSelector元素定位
//(1) tagName定位
//fd.findElement(By.cssSelector("input"));
//(2) id定位
//fd.findElement(By.cssSelector("#kw")).sendKeys("京东");
//(3) className定位
//fd.findElement(By.cssSelector(".s_ipt")).sendKeys("京东");
//fd.findElement(By.cssSelector(".bg .s_btn")).click();
//xpath定位
//fd.findElement(By.xpath("//*[@id='kw' and @name='wd']")).sendKeys("京东");//多属性定位
//fd.findElement(By.xpath("//a[text()='新闻']")).click();//全部文本定位
//fd.findElement(By.xpath("//a[contains(text(),'hao')]")).click();//全部或部分文本
}
public static void openFireFox() {
System.setProperty("webdriver.firefox.bin", "E:\\Mozilla Firefox\\firefox.exe");
System.setProperty("webdriver.gecko.driver", "E:\\selenium\\geckodriver\\geckodriver.exe");
//1、打开firefox浏览器
fd = new FirefoxDriver();
//2、访问百度
fd.get("https://www.baidu.com");
}
11、隐式等待和显式等待
1.隐式等待:在设置的超时时间范围内不断查找元素,直到找到元素或超时。
2.显式等待:用来等待某个条件发生后在继续执行后续代码。
private static FirefoxDriver fd;
public static void main(String[] args) throws InterruptedException {
openFireFox();
//隐式等待
//fd.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
fd.get("http://www.baidu.com");
fd.findElement(By.id("kw")).sendKeys("京东");
fd.findElement(By.id("su")).click();
//显式等待
WebDriverWait wd = new WebDriverWait(fd, 5);
wd.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//a[text()='官方']")));
fd.findElement(By.xpath("//a[text()='官方']")).click();
}
public static void openFireFox() {
System.setProperty("webdriver.firefox.bin", "E:\\Mozilla Firefox\\firefox.exe");
System.setProperty("webdriver.gecko.driver", "E:\\selenium\\geckodriver\\geckodriver.exe");
fd = new FirefoxDriver();
}
12、select下拉框
如果网页是一个下拉框,将web元素封装为Select对象。
select.getOptions() 获取所有选项。
select.selectByIndex() 根据索引选中对应的元素。
select.selectByValue() 选择指定value值对应的选项。
select.selectByVisibleText() 选中文本值对应的选项。
private static FirefoxDriver fd;
public static void main(String[] args) throws InterruptedException {
openFireFox();
fd.get("http://www.baidu.com");
fd.findElement(By.id("s-usersetting-top")).click();
fd.findElement(By.xpath("//a[text()='高级搜索']")).click();
Thread.sleep(2000);
WebElement we = fd.findElement(By.className("c-select-arrow-up"));
Select select = new Select(we);
select.deselectByIndex(1);
Thread.sleep(2000);
select.selectByVisibleText("最近一月");
}
public static void openFireFox() {
System.setProperty("webdriver.firefox.bin", "E:\\Mozilla Firefox\\firefox.exe");
System.setProperty("webdriver.gecko.driver", "E:\\selenium\\geckodriver\\geckodriver.exe");
fd = new FirefoxDriver();
}
13、鼠标操作
通过Actions对象可以发起鼠标左键、右键等操作,最后使用perform方法执行操作。
private static FirefoxDriver fd;
public static void main(String[] args) throws InterruptedException {
openFireFox();
//鼠标操作
fd.get("http://www.treejs.cn/v3/demo/cn/exedit/drag.html");
WebElement sourceElement = fd.findElement(By.id("treeDemo_2_span"));
WebElement targetElement = fd.findElement(By.id("treeDemo_3_span"));
Actions actions = new Actions(fd);
actions.clickAndHold(sourceElement).moveToElement(targetElement).release().build().perform();
}
public static void openFireFox() {
System.setProperty("webdriver.firefox.bin", "E:\\Mozilla Firefox\\firefox.exe");
System.setProperty("webdriver.gecko.driver", "E:\\selenium\\geckodriver\\geckodriver.exe");
fd = new FirefoxDriver();
}
本文主要介绍了Selenium作为Web应用程序测试工具的用途、功能特性、局限性,详细讲解了Selenium IDE、WebDriver的使用,包括常见命令、元素定位、等待策略以及下拉框操作,并提到了鼠标操作。通过Selenium,可以实现自动化测试,提高测试效率,解决回归测试、压力测试和兼容性测试等问题。
2537

被折叠的 条评论
为什么被折叠?



