多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

UI自动化测试中的页面定位问题

更新时间:2022-07-26 09:09:23 作者:多测师 浏览:41

  这几天有人问我,UI自动化测试中使用到的页面定位元素应该存放在哪里比较合适?我想说的是,如果你使用的是PO设计模式设计测试用例的话,可以把定位元素存在每一个page页面或者单独存放在一个目录中,新键不同页面对应不同名称的文件来存储定位方式。

UI自动化测试中的页面定位问题

  当页面变动的时只需修改对应页面对应的定位表达式文件即可,方便项目维护。还有一种就是存放在配置文件下,这样对于不懂得自动化测试的人员也可以配置,当然你可以根据自己的意愿进行选择。那么下面我看就来看一下如何存放到配置文件中,如何来读取并定位?

  测试步骤:

  1.打开网址;

  2.搜索框输入python;

  3.点击搜索按钮;

  4.判断python是否包含在页面源码中。

  文件说明:

  WebElement.ini 存放定位元素。

  GetElement.py用来读取配置文件并查找页面元素。

  SouGouTc.py用来编写测试用。

  实例代码

  WebElement.ini:

  [sogou]queryBox=id:queryqueryBtn=id:stb

  GetElement.py:

  from selenium.webdriver.support.ui

  import WebDriverWaitimport configparserimport osfrom selenium

  import webdriverclass 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 elementif __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 webdriverimport unittest

  import timefrom programDataSeparate.GetElement

  import getElementclass 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中取得该页面元素的实例对象,最后返回给测试用例方法中进行后续处理。

  这样做的好处是即使不懂得测试的人员也可以配置用例,当定位表达式改变时,只修改配置文件中的定位即可,无需修改测试相关代码,当然这也是相对来说的,如果页面功能操作步骤变了那么你就得修改代码操作步骤了。

  以上内容为大家介绍了UI自动化测试中的页面定位问题,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部