UI自动化测试中的页面定位问题,年薪50W软件测试工程师为你解答
Posted 软件测试呀
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UI自动化测试中的页面定位问题,年薪50W软件测试工程师为你解答相关的知识,希望对你有一定的参考价值。
这几天有人问我,UI自动化测试中使用到的页面定位元素应该存放在哪里比较合适?
我想说的是,如果你使用的是PO设计模式设计测试用例的话,可以把定位元素存在每一个page页面或者单独存放在一个目录中,新键不同页面对应不同名称的文件来存储定位方式。
当页面变动的时只需修改对应页面对应的定位表达式文件即可,方便项目维护。
还有一种就是存放在配置文件下,这样对于不懂得自动化测试的人员也可以配置,当然你可以根据自己的意愿进行选择。
那么下面我看就来看一下如何存放到配置文件中,如何来读取并定位?
目录结构
测试地址:http://www.sogou.com
测试步骤:
1.打开网址;
2.搜索框输入python;
3.点击搜索按钮;
4.判断python是否包含在页面源码中。
文件说明:
WebElement.ini 存放定位元素
GetElement.py用来读取配置文件并查找页面元素
SouGouTc.py用来编写测试用
实例代码
WebElement.ini:
[sogou]
queryBox=id:query
queryBtn=id:stb
(左右滑动查看完整代码)
GetElement.py:
from selenium.webdriver.support.ui import WebDriverWait
import configparser
import os
from selenium import webdriver
class getElement():
'''
从配置文件中来获取定位信息
'''
def __init__(self):
self.elementIni = os.path.dirname(os.path.abspath(__file__))\\
+r'\\WebElement.ini' # 配置文件所在目录
def getElement(self, driver, sogouSection, sogouOption):
try:
f = configparser.ConfigParser()
f.read(self.elementIni) # 读配置文件内容到内存中
locators = f.get(sogouSection, sogouOption).split(':')
# 获取定位方式
locaMethod = locators[0]
# 获取定位表达式
locaExpression = locators[1]
# 通过显示等待的方式获取页面的元素
element = WebDriverWait(driver,5).until(lambda x : x.find_element(locaMethod, locaExpression))
except Exception as e:
raise e
else:
return element
if __name__ == '__main__':
ele = getElement()
print(ele.elementIni)
driver = webdriver.Firefox()
driver.get('http://www.sogou.com')
element = ele.getElement(driver, 'sougou', 'queryBox')
element.send_keys('python')
(左右滑动查看完整代码)
SouGouTc.py:
from selenium import webdriver
import unittest
import time
from programDataSeparate.GetElement import getElement
class sogouTc(unittest.TestCase):
def setUp(self):
self.obj = getElement()
self.driver = webdriver.Firefox()
self.driver.get('http://www.sogou.com')
def testSoGou(self):
elementQuery = self.obj.getElement(self.driver, 'sogou', 'queryBox') # 搜索框
elementQuery.send_keys('python')
elementBtn = self.obj.getElement(self.driver, 'sogou', 'queryBtn') # 搜索按钮
elementBtn.click()
time.sleep(2)
self.assertTrue('python' in self.driver.page_source) # 断言
def tearDown(self):
self.driver.quit()
if __name__ == '__main__':
unittest.main()
(左右滑动查看完整代码)
总结
本实例实现了程序与数据的分离,首先从UI对象库文件WebElement.ini中取得sogou首页中需要操作的页面元素的定位方式和定位表达式。
然后在GetElement.py中取得该页面元素的实例对象,最后返回给测试用例方法中进行后续处理。
这样做的好处是即使不懂得测试的人员也可以配置用例,当定位表达式改变时,只修改配置文件中的定位即可,无需修改测试相关代码,当然这也是相对来说的,如果页面功能操作步骤变了那么你就得修改代码操作步骤了。
END
房子要一层一层盖,知识要一点一点学。大家在学习过程中要好基础,多上手实操,话不多说,这里狠狠上一次干货!我熬夜整理好的各阶段(功能、接口、自动化、性能、测开)技能学习资料+实操讲解,非常适合私下里学习,比找资料自学高效多了,分享给你们。
领取关 w/x/g/z/h:软件测试小dao
敲字不易,如果此文章对你有帮助的话,点个赞收个藏来个关注,给作者一个鼓励。也方便你下次能够快速查找。
以上是关于UI自动化测试中的页面定位问题,年薪50W软件测试工程师为你解答的主要内容,如果未能解决你的问题,请参考以下文章