一、python+selenium UI自动化怎么实现
- 首先在电脑pip下载安装selenium
- 下载对应浏览器的版本驱动
- 在Python编辑器pycharm里面导入webdriver(这个是Selenium最重要的东西)
webdriver是通过各种浏览器的驱动来驱动浏览器的 - 然后实例化driver,在python写入要打开网页的网址,具体的操作,去页面定位我们需要操作的功能流程
- python编辑器把对应的定位写入,注意设置‘睡眠时间’,模拟人操作的场景,没设置的sleep的话,有时候浏览器读取慢
- 运行
二、自动化测试Selenium Webdriver实现web UI自动化
2.1 意义
减少人力成本,完成手工不能完成的工作,提高测试效率,完成大量重复性工作 选择自动化工具,框架 Selenium Webdriver 自动化测试不是写脚本,而是一种构建自动化框架的思想
2.2 selenium组成
selenium RC selenium IDE 录制 selenium Webdriver selenium Grid 分布式
2.3 selenium工作原理
2.3.1 Selenium IDE 的安装及使用
Selenium IDE的web录制功能能将操作动作录制下来并且能保存成相应的代码,较为方便 目前来说,有三种情况选择 谷歌商店搜索selenium IDE下载 火狐浏览器,设置中附加组件搜索下载selenium IDE即可 本地下载后在Firefox中添加组件 打开火狐浏览器,点击“打开菜单”->“附加组件” 在右侧搜索框中输入“Selenium IDE” 下拉找到“Selenium IDE”,点击“添加到FireFox”,并点击安装 安装完毕后点击重启火狐浏览器,至此便可在火狐浏览器菜单栏-工具种中查看到Selenium IDE工具条
2.4 环境搭建
python pip是一个安装和管理python包的工具,使用pip安装非常的方便 pip install selenium
java 环境 JDK下载后配置环境变量JAVA_HOME 尝试在eclipse中新建java项目,引入selenium相关的jar包,添加testNG
selenium Python装selenium,直接pip
2.5 webdriver中如何启动浏览器
2.5.1 启动Firefox浏览器
webdriver自带Firefox的驱动,所以启动Firefox浏览器为
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();
}
2.5.2 启动Chrome 浏览器
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.*;
public class testDriver{
WebDriver driver; System.setProperty("webdriver.chrome.driver","\\chromedriver\\chromedriver.exe");
driver = new ChromeDriver();
String url = "http://www.baidu.com";
driver.get(url);
driver.quit();
}
2.5.3 启动ie浏览器 同Chrome类似
import org.openqa.selenium.*;
import org.openqa.selenium.InternetExplorer.*;
public class testDriver{
WebDriver driver; System.setProperty("webdriver.chrome.driver","\\chromedriver\\chromedriver.exe");
driver = new InternetExplorerDriver();
String url = "http://www.baidu.com";
driver.get(url);
driver.quit();
}
2.6 页面元素定位
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"); //根据绝对路径 或者 元素属性值来定位,实际中可能会用到复杂的层级+属性定位
2.6 selenium种用到的 webdriver API
2.6.1 打开地址
Driver.get()
Driver.natigate.to()
2.6.2 操作浏览器
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() //还在进程中
2.6.3 获取cookie
Set<Cookie> allCookies = driver.manage().getCookies();
driver.manage().deleteAllCookies();
2.6.4 输入框操作
sendkeys()
Clear()
getText()
Click()
2.6.5 选择框
单选 复选 下拉框
Select list = new Select(driver.findElement(By.name("listname")));
list.selectByValue("value")
2.6.6 页面元素
isdisplay()页面是否显示
find_element元素是否存在
isSelect()元素是否选中
isEnabled()是否处于灰化状态
2.6.7 鼠标事件
ActionChains类提供了鼠标操作的常用方法,
如context_click()
grag_and_drop()
move_to_element()
2.6.8 键盘事件
send_keys(Keys.BACK_SPACE) 删除键
send_keys(Keys.SPACE) 空格键
send_keys(Keys.ENTER) 空格键
send_keys(Keys.CONTROL,'a') 全选Ctrl+A
2.6.9 等待
显式等待:
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)
隐式等待:
driver.implicitly_wait(10)
|