网易云登入账户所有步骤和流程如下:
测试
简单测试场景:输入错误的手机号码,登入失败
实现方式:
- 面向过程实现,以操作过程为导向,实现自动化测试
- 面向对象实现,采用业务封装,调用实现
1. 面向过程
#coding =utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.implicitly_wait(4)
driver.maximize_window()
#打开网易云音乐网站
driver.get('https://music.163.com/')
#定位首页->登入按钮,并点击
driver.find_element(By.CSS_SELECTOR ,'a.link.s-fc3').click()
#定位并选择登入页面中的‘其他登入模式’
driver.find_element(By.CSS_SELECTOR ,'a.u-btn2.other').click()
#判断服务条款有没有勾选
if not driver.find_element(By.CSS_SELECTOR ,'input#j-official-terms').is_selected():
driver.find_element(By.CSS_SELECTOR ,'input#j-official-terms').click()
#选择手机登入
driver.find_element(By.CSS_SELECTOR ,'a.u-btn2.u-btn2-2').click()
#输入手机号码
driver.find_element(By.CSS_SELECTOR , 'input.j-phone.txt.u-txt').send_keys('165564464654')
#输入密码
driver.find_element(By.CSS_SELECTOR , 'input#pw.j-pwd.u-txt').send_keys('253156454121')
#点击登入
driver.find_element(By.CSS_SELECTOR , 'a.j-primary.u-btn2.u-btn2-2').click()
#判断登入是否失败
if driver.find_element(By.CSS_SELECTOR, 'i.u-icn.u-icn-25').is_displayed:
print ' login failed'
driver.quit()
2. 面向对象
# coding: utf-8
from selenium import webdriver
from selenium.webdriver.common.by import By
class Login():
_login_locator = (By.CSS_SELECTOR, 'a.link.s-fc3')
_other_login_mode_locator =(By.CSS_SELECTOR ,'a.u-btn2.other')
_phone_number_login_locator = (By.CSS_SELECTOR ,'a.u-btn2.u-btn2-2')
_privacy_policy_checkout_loactor = (By.CSS_SELECTOR ,'input#j-official-terms')
_input_phone_number_locator = (By.CSS_SELECTOR , 'input.j-phone.txt.u-txt')
_input_password_locator = (By.CSS_SELECTOR , 'input#pw.j-pwd.u-txt')
_login_button_locator = (By.CSS_SELECTOR, 'a.j-primary.u-btn2.u-btn2-2')
_locate_mark_locator = (By.CSS_SELECTOR, 'i.u-icn.u-icn-25')
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.implicitly_wait(4)
self.driver.maximize_window()
self.driver.get('https://music.163.com/')
def click_login(self):
self.driver.find_element(*self._login_locator).click()
def select_other_login_mode(self):
self.driver.find_element(*self._other_login_mode_locator).click()
def check_privacy_policy_checkout(self):
if not self.driver.find_element(*self._privacy_policy_checkout_loactor).is_selected():
self.driver.find_element(*self._privacy_policy_checkout_loactor).click()
def phone_number_login(self):
self.driver.find_element(*self._phone_number_login_locator).click()
def input_phone_number_account(self):
self.driver.find_element(*self._input_phone_number_locator).send_keys('165564464654')
def input_password(self):
self.driver.find_element(*self._input_password_locator).send_keys('253156454121')
def click_login_button(self):
self.driver.find_element(*self._login_button_locator).click()
def is_login_scuccessfully(self):
if self.driver.find_element(*self._locate_mark_locator).is_displayed:
#print ' login failed'
raise 'login failed'
def close_window(self):
self.driver.quit()
if __name__ == '__main__':
login = Login()
login.click_login()
login.select_other_login_mode()
login.check_privacy_policy_checkout()
login.phone_number_login()
login.input_phone_number_account()
login.input_password()
login.click_login_button()
login.is_login_scuccessfully()
login.close_window()
测试结果如下:
这两个代码缺点:
①确实对页面加载时间,页面元素是否加载的判断
②断言草率
后续再补充吧!