zoukankan      html  css  js  c++  java
  • web自动化测试中的PO模式(二)---将元素定位分离出来

    PO模式代码优化

    1. 新建一个PageLocators包,将元素定位分别写到对应的页面中,如loginpage_locators,封装成一个类,以元组的形式存储,如下:
       1 from selenium.webdriver.common.by import By
       2 
       3 class LoginPageLocator:
       4     #元素定位
       5     # 用户名输入框
       6     user_text=(By.XPATH, "//input[@name='phone']")
       7     # 密码输入框
       8     pwd_text=(By.XPATH,"//input[@name='password']")
       9     # 记住用户名勾选框
      10     remember=(By.XPATH,"//input[@name='remember_me']")
      11     # 登录按钮
      12     login_btn=(By.XPATH,"//button[text()='登录']")
      13     # 错误信息提示框----登录区域
      14     errorMsg_form_loginArea=(By.XPATH,"//div[@class='form-error-info']")
      15     #错误信息提示框-----中心区域
      16     errorMsg_form_centerArea=(By.XPATH,"//div[@class='layui-layer-content']")
    2. 在login_page页面对象中引用LoginPageLocator类中的元素,如下:
       1 from selenium.webdriver.support import expected_conditions as EC
       2 from selenium.webdriver.support.wait import WebDriverWait
       3 from selenium.webdriver.common.by import By
       4 from PageLocators.loginpage_locators import LoginPageLocator as loc
       5 class LoginPage:
       6     def __init__(self,driver):
       7         self.driver=driver
       8 
       9     def login(self,username,pwd,remember_user=True):
      10         # 等待定位元素出现
      11         WebDriverWait(self.driver,10).until(EC.visibility_of_element_located(loc.user_text))
      12         # 输入用户名
      13         self.driver.find_element(*loc.user_text).send_keys(username)
      14         # 输入密码
      15         self.driver.find_element(*loc.pwd_text).send_keys(pwd)
      16         # 定位记住手机号元素
      17         remember_ele=self.driver.find_element(*loc.remember)
      18         # 判断时候记住手机号
      19         if remember_user==True:
      20             remember_ele.checked=True
      21         else:
      22             remember_ele.checked=False
      23         # 点击登录
      24         self.driver.find_element(*loc.login_btn).click()
      25     # 获取登录区域的错误提示信息
      26     def get_errorMsg_form_loginArea(self):
      27         WebDriverWait(self.driver,10).until(EC.visibility_of_element_located(loc.errorMsg_form_loginArea))
      28         error_ele=self.driver.find_element(*loc.errorMsg_form_loginArea)
      29         print(error_ele.text)
      30         return error_ele.text
      31     # 获取中心区域的错误信息
      32     def get_errorMsg_form_centerArea(self):
      33         WebDriverWait(self.driver,10).until(EC.visibility_of_element_located(loc.errorMsg_form_centerArea))
      34         center_errorMsg_ele=self.driver.find_element(*loc.errorMsg_form_centerArea)
      35         print(center_errorMsg_ele.text)
      36         return center_errorMsg_ele.text

      备注:*loc.login_btn表示将元组外面的括号取掉,将元组内的两个元素按顺序,放到对应的位置,俗称脱外套

    3. 运行main.py,如图:
    4. 分层设计中,调用模块:pageobjects调用pagelocators ,  testcases调用 pageobjects+testdatas

       

  • 相关阅读:
    异步刷新前后台的代码
    AngularJS 涉及到checkbox时候初始化值为on 的问题解决方案
    百度编辑器初始化的时候禁用
    修正点击事件的js
    js 四舍五入函数
    How to: Change icon in Inno Setup
    How to: Signing Installers You Create with Inno Setup
    Pascal Language: Recommended Materials
    How to: Reading an ini config file from a batch file
    "const wchar_t is incompatible with parameter of type "LPCSTR"
  • 原文地址:https://www.cnblogs.com/wsk1988/p/12720869.html
Copyright © 2011-2022 走看看