前言    

前面几篇都是讲一些基础的定位方法,没具体的案例,小伙伴看起来比较枯燥,有不少小伙伴给小编提建议以后多出一些具体的案例。本篇就是拿部落论坛作为测试项目,写一个简单的登录测试脚本。

在写登录脚本的时候呢,先要保证流程能跑起来,然后才是去想办法优化代码,让自己的脚本看起来更舒服,具有良好的可读性。

一、登录

    1.先打开浏览器

    2.打开论坛主页

    3.查找元素之前可以先设置元素等待:implicitlywait()

    4.点登录按钮,弹出登录框

    5.输入用户名、密码,然后点登录

# coding:utf-8
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("http://www.hordehome.com")
# 设置隐试等待10秒
driver.implicitly_wait(10)
# 点登录按钮,输入账号密码后登录
driver.find_element_by_id("ember886").click()
driver.find_element_by_id("login-account-name").send_keys("YOYO")
driver.find_element_by_id("login-account-password").send_keys("xxxooo")
driver.find_element_by_css_selector(".btn.btn-large.btn-primary").click()

二、检查结果

    1.登录完成之后,需要检查是否登录成功,这里就需要有个检查点,我这边选择的是查看登录后头像的属性

    2.先定位到登录头像,通过get_attribute()方法获取到这个对象的title属性

    3.判断获取到的值,与期望结果是否一致

    4.符合预期结果测试通过

    5.不符合预期结果测试不通过

# 获取登录头像的title属性值
t = driver.find_element_by_id("current-user").get_attribute("title")
# 判断返回结果
if t == u"个人页面、消息、书签和设置":
    print("登录成功")
else:
    print("登录失败")

 (注意:这里网站已经更新过了,学下思路就行,不要copy)

 

三、退出登录

    1.测试完之后,别忘了最后退出登录

    2.退出登录后,关闭浏览器

# 退出登录
driver.find_element_by_id("current-user").click()
driver.find_element_by_id("ember1097").click()
driver.quit()

 
四、登录函数

    1.虽然上面的代码能实现登录,但整个代码跟记流水账一样,没什么可读性。如果我想换个账号登录,这时候还得找到登录的账号和密码位置,比较费时。

    2.我们可以把登录和退出写出两个函数,这样看起来更舒服一点。

    3.把登录的账号和密码参数化

# coding:utf-8
from selenium import webdriver
def login(user,password):
    driver.get("http://www.hordehome.com")
    driver.implicitly_wait(10)
    driver.find_element_by_id("ember886").click()
    driver.find_element_by_id("login-account-name").send_keys(user)
    driver.find_element_by_id("login-account-password").send_keys(password)
    driver.find_element_by_css_selector(".btn.btn-large.btn-primary").click()
    return driver
def logout():
    driver.find_element_by_id("current-user").click()
    driver.find_element_by_id("ember1097").click()
    driver.quit()

 五、运行用例

    1.先调用登录函数

    2.检查登录结果

    3.退出登录,并关闭浏览器

if __name__ == "__main__":
    driver = webdriver.Firefox()
    driver = login("YOYO", "xxxooo")
    t = driver.find_element_by_id("current-user").get_attribute("title")
    if t == "个人页面、消息、书签和设置":
        print("登录成功")
    else:
        print("登录失败")
    logout()