前言
前面几篇都是讲一些基础的定位方法,没具体的案例,小伙伴看起来比较枯燥,有不少小伙伴给小编提建议以后多出一些具体的案例。本篇就是拿部落论坛作为测试项目,写一个简单的登录测试脚本。
在写登录脚本的时候呢,先要保证流程能跑起来,然后才是去想办法优化代码,让自己的脚本看起来更舒服,具有良好的可读性。
一、登录
1.先打开浏览器
2.打开论坛主页:"http://www.hordehome.com/"
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()
以上是登录部落论坛www.hordehome.com的脚本参考,由于论坛有更新,所以代码已过期,仅供参考,后续会优化。
在学习过程中有遇到疑问的,可以加selenium(python+java) QQ群交流:646645429
《selenium+python高级教程》已出书:selenium webdriver基于Python源码案例
(购买此书送对应PDF版本)
可以关注下我的个人公众号: