一.UI自动化常见操作:
二.webdriver常见操作语法:
1.self.driver.find_element(locateType, locate).send_keys(inputValue) 页面上符合条件的元素后输入
2.self.driver.find_element(locateType, locate).click() 页面上符合条件的元素后点击
3.self.driver.maximize_window() 浏览器最大化
4.self.driver.switch_to.window(i) 切换窗口
5.driver.driver.minimize_window() 最小化浏览器窗口
6.driver.set_window_size(480, 800) 设置浏览器宽、高
7.driver.back()、driver.forward() 控制浏览器后退、前进
8.actions = ActionChains(self.driver)
9.actions.move_to_element(DH).perform() 鼠标悬停
10.self.driver.switch_to.frame(iframe) 切换Iframe
11.WebDriverWait(self.driver, 15, 1).until(
EC.visibility_of(self.driver.find_element(locateType, locate))) 等待
12.self.driver.quit() 关闭浏览器
13.self.driver.refresh() 刷新页面
三.元素定位:
通过ID定位:element = driver.find_element(BY.id,'element_id')
通过名称定位:element = driver.find_element(BY.name,'element_name')
通过类名定位:element = driver.find_element(BY.class_name,'class_name')
通过标签名定位:element = driver.find_element(BY.tag_name,'tag_name')
通过链接文本定位(用于<a>标签):element = driver.find_element(BY.link_text,'link_text')
通过部分链接文本定位:element = driver.find_element(BY.css_selector,'css_selector')
通过XPath定位:element = driver.find_element(B._xpath,'xpath_expression')
1.XPath定位:
定义:是一种用来定位 XML(eXtensible Markup Language)文档中节点的语言,HTML 可以看做 XML 的一种实现。
2.两种定位方式:
绝对路径 XPath:从文档的根节点开始编写的 XPath 表达式。例如:element = driver.find_element(By.XPATH,'/html/body/div[1]/form/input[2]')。
相对路径 XPath:从当前节点或者某个节点开始的 XPath 表达式。例如:element = driver.find_element(By.XPATH,'//input[@id='username')
3.可以直接在浏览器Elements页签中复制xpath
四.自动化模型介绍:
1.线性测试
通过录制或编写脚本,一个脚本完成一个场景(一组完整功能操作),通过对脚本的回放进行自动化测试 优势:每一个脚本都是完整独立的,每一个脚本对应一个测试用例 缺点:开发成本高,会有重复操作重复脚本;维护成本也高,修改重复操作的脚本时,要逐一进行修改。
2、模块化驱动测试
测试过程中,即使自动化测试,写的脚本,很多内容是重复性的;于是我们就可以考虑将其重复的部分,写成一个公共的模块,当用例执行中需要这一模块操作时调用,这样最大限度的消除重复,提高测试用例的可维护性。 解决了线性测试的两个问题:1.提高了开发效率;2.简化了维护复杂性。缺点:在数据会改变的情况下,会加大编写重复的脚本(比如现在我要测试不同用户登录的场景,先是张三登录,登录完后换李四登录,然后继续换用户登录,这样会有重复的登录脚本,虽然登录的步骤一样,但是登录的数据不一样)。
3、关键字驱动测试
这是一种通过关键字的改变而引起测试结果改变的功能自动化测试模型。QTP(UFT)、Robot Framework 等都是以关键字驱动为主的自动化测试工具,可以将测试的对象、满足条件、传输值、断言等,甚至是所需要读取的外部文件以及外部类库,所有的相关条件存储在文件中,测试人员需要做的就是将测试脚本按照“填表格”的方式填入,并考虑三个问题就可以了:做什么、对谁做、怎么做;采用关键字驱动测试来编写同样的脚本需要较高的学习成本。同样,这样的框架越到后期越难维护,可靠性也会变差。
4、数据驱动测试
数据驱动是数据的参数化,因为输入数据的不痛而引起输出结果的不同;比如定义的数组、字典、或者是外部文件(Excel、csv、txt、xml等)都可以看做是数据驱动,目的就是实现数据与脚本的分离。 优点是进一步增强了脚本的复用性。通过参数化来实现数据驱动将要输入的值当做一个参数来进行传入,实现根据数据输入的不同而有不同的执行结果。
登录的函数以传参的方式封装
主方法中调用该方法,传入不同的参数