减少人力成本,完成手工不能完成的工作,提高测试效率,完成大量重复性工作
选择自动化工具,框架 Selenium Webdriver
自动化测试不是写脚本,而是一种构建自动化框架的思想
selenium RC
selenium IDE 录制
selenium Webdriver
selenium Grid 分布式
Selenium IDE的web录制功能能将操作动作录制下来并且能保存成相应的代码,较为方便
目前来说,有三种情况选择
谷歌商店搜索selenium IDE下载
火狐浏览器,设置中附加组件搜索下载selenium IDE即可
本地下载后在Firefox中添加组件
打开火狐浏览器,点击“打开菜单”->“附加组件”
在右侧搜索框中输入“Selenium IDE”
下拉找到“Selenium IDE”,点击“添加到FireFox”,并点击安装
安装完毕后点击重启火狐浏览器,至此便可在火狐浏览器菜单栏-工具种中查看到Selenium IDE工具条
python
pip是一个安装和管理python包的工具,使用pip安装非常的方便
pip install selenium
java 环境
JDK下载后配置环境变量JAVA_HOME
尝试在eclipse中新建java项目,引入selenium相关的jar包,添加testNG
selenium
Python装selenium,直接pip
webdriver自带Firefox的驱动,所以启动Firefox浏览器为
//引入selenium驱动
import org.openqa.selenium.*;
public class testDriver{
WebDriver driver;
System.setProperty("webdriver.firefox.bin","\\Firefox\\firefox.exe");
driver = new FirefoxDriver();
String url = "http://www.baidu.com";
driver.get(url);
driver.quit();
}
//引入selenium驱动 和Chrome包
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.*;
public class testDriver{
WebDriver driver; System.setProperty("webdriver.chrome.driver","\\chromedriver\\chromedriver.exe"); //与Firefox.bin不同
driver = new ChromeDriver();
String url = "http://www.baidu.com";
driver.get(url);
driver.quit();
}
//引入selenium驱动 和InternetExplorer包
import org.openqa.selenium.*;
import org.openqa.selenium.InternetExplorer.*;
public class testDriver{
WebDriver driver; System.setProperty("webdriver.chrome.driver","\\chromedriver\\chromedriver.exe"); //与Firefox.bin不同
driver = new InternetExplorerDriver();
String url = "http://www.baidu.com";
driver.get(url);
driver.quit();
}
UI自动化开始的第一部是对页面元素的定位,因为自动化的脚本实际上就是对这些元素的操作,这是第一步,当然自动化不是简单的寻找到元素点击跳转就可以了,而是提供一种框架或者模版,能够使功能测试可以应用脚本去完成
常见的元素定位方式有:
//driver.findElement(By.id("kw") ).sendkeys("test"); html中ID是唯一的
//driver.findElement(By.name("wd") ).sendkeys("test"); name 是指元素的名称
//driver.findElement(By.className("s_ipt") ).sendkeys("test"); 元素的类名
//driver.findElement(By.tagName("input") ).sendkeys("test"); //每个元素本质也是一个tag 默认取第一个标签,一般要加上判断条件才能筛选到想要的那个元素
//driver.findElement(By.linkText("新闻") ).click(); 文本链接
//driver.findElement(By.partialLinkText("新") ).click(); 部分文本链接
//driver.findElement(By.xpath(".//*[@id='form']/span[1]") ).sendkeys("test"); //根据绝对路径 或者 元素属性值来定位,实际中可能会用到复杂的层级+属性定位
Driver.get()
Driver.natigate.to()
Driver.natigate().refresh()
Driver.natigate().forward()
Driver.natigate().banck()
Driver.natigate().getTitle()
Driver.getCurrentUrl()
Driver.manage().windows().maximize(); // 窗口最大化
Driver.manage().windows().set_window_size(); // 设置窗口大小
Driver.quite() //还在进程中
Set allCookies = driver.manage().getCookies();
driver.manage().deleteAllCookies();
sendkeys()
Clear()
getText()
Click()
单选 复选 下拉框
Select list = new Select(driver.findElement(By.name("listname")));
list.selectByValue("value")
isdisplay()页面是否显示
find_element元素是否存在
isSelect()元素是否选中
isEnabled()是否处于灰化状态
ActionChains类提供了鼠标操作的常用方法,
如context_click()
grag_and_drop()
move_to_element()
send_keys(Keys.BACK_SPACE) 删除键
send_keys(Keys.SPACE) 空格键
send_keys(Keys.ENTER) 空格键
send_keys(Keys.CONTROL,'a') 全选Ctrl+A
显式等待:
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
隐式等待:
driver.implicitly_wait(10)