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

17727591462

联系电话

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

Selenium关于Page Objects-自动化测试

更新时间:2022-04-24 09:33:50 作者:多测师 浏览:169

  介绍页面对象设计模式。一个页面对象表示在你测试的web页面用户交互的界面。

  使用页面对象模式的有点:

  · 创建可重用的代码可以在多个测试用例中使用

  · 减少重复的代码量

  · 如果用户界面改变,只需要修改一个地方

Selenium关于Page Objects-自动化测试

  1.Test case

  下面的测试用例是在百度中搜索关键字,并返回相应的结果

  import unittest

  from selenium import webdriver

  import page

  class BaiduSearch(unittest.TestCase):

  def setUp(self):

  self.driver = webdriver.Firefox()

  self.driver.get("http://www.baidu.com")

  def test_search_in_baidu(self):

  main_page = page.MainPage(self.driver)

  #断言标题关键字

  assert main_page.is_title_matches(), "baidu title doesn't match."

  #设置搜索的关键字

  main_page.search_text_element = "selenium"

  main_page.click_go_button()

  search_results_page = page.SearchResultsPage(self.driver)

  #断言结果页面不是空的

  assert search_results_page.is_result_found(), "No result found."

  def tearDown(self):

  self.driver.close()

  if __name__ == "__main__":

  unittest.main()

  2.Page object classes

  页面对象模式将为每个web页面创建一个对象。按照这种方式分层测试代码和实现。

  新建page.py,代码如下:

  from element import BasePageElement

  from locators import MainPageLocators

  class SearchTextElement(BasePageElement):

  locator = 'kw'

  class BasePage(object):

  """被所有页面调用的页面初始化的基础类"""

  def __int__(self, driver):

  self.driver = driver

  class MainPage(BasePage):

  """主页面的方法"""

  search_text_element = searchTextElement()

  def is_title_match(self):

  return "selenium" in self.driver.title

  def click_go_button(self):

  elemnt = self.driver.find_element(*MainPageLocators.GO_BUTTON)

  element.click()

  class SearchsultsPage(BasePage):

  """搜索结果页面的方法"""

  def is_results_found(self):

  return "No results found." not in self.driver.page_source

  3.Page elements

  新建element.py 代码如下:

  from selenium.webdriver.support.ui import WebDriverWait

  class BasePageElement(object):

  def __set__(self, obj, vaule):

  driver = obj.driver

  WebDriverWait(driver, 100).until(

  lambda driver: driver.find_element_by_name(self.locator))

  driver.find_element_by_name(self.locator).send_keys(value)

  def __get__(self, obj, owner):

  driver = obj.driver

  WebDriverWait(driver, 100).until(

  lambda driver: driver.find_element_by_name(self.locator))

  element = driver.find_element_by_name(self.locator)

  return element.get_attribute("value")

  4.Locators

  将定位到的元素分离,同一个页面的定位的元素属于同一个类

  新建locators.py 代码如下:

  from selenium.webdriver.common.by import By

  class MainPageLocators(object):

  """所有主页面定位到的元素"""

  GO_BUTTON = (By.ID, 'su')

  class SearchResultsPageLoactors(object):

  """所有搜索结果定位的元素"""

  Pass

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

联系电话

17727591462

返回顶部