Selenium2+python自动化10-登录案例

前言

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

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

一、登录

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的脚本参考,小伙伴们可以拿论坛作为测试项目实践下。

时间: 2024-10-11 01:10:02

Selenium2+python自动化10-登录案例的相关文章

selenium+python自动化之登录案例

一.登录 1.先打开浏览器 2.打开论坛主页:http://www.hordehome.com/ 3.查找元素之前可以先设置元素等待:implicitly_wait() 4.点登录按钮,弹出登录框 5.输入用户名.密码,然后点登录 二.检查结果 1.登录完成之后,需要检查是否登录成功,这里就需要有个检查点,小编选择的是查看登录后头像的属性 2.先定位到登录头像,通过get_attribute()方法获取到这个对象的title属性 3.判断获取到的值,与期望结果是否一致 4.符合预期结果测试通过

Selenium2+python自动化59-数据驱动(ddt)

前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载生成. 一.环境准备 1.安装ddt模块,打开cmd输入pip install ddt在线安装 >>pip install ddt 二.数据驱动原理 1.测试数据为多个字典的list类型 2.测试类前加修饰@ddt.ddt 3.case前加修饰@ddt.data() 4.运

Selenium2+python自动化52-unittest执行顺序

前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的.对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行. 本篇通过最简单案例详细讲解unittest执行顺序. 一.案例分析 1.先定义一个测试类,里面写几个简单的case # coding:utf-8import unittestimport timeclass Test(unittest.TestCase):    def setUp(self):        print "start!"

Selenium2+python自动化52-unittest执行顺序【转载】

本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/ 前言 很多初学者在使用unittest框架时候,不清楚用例的执行顺序到底是怎样的.对测试类里面的类和方法分不清楚,不知道什么时候执行,什么时候不执行. 本篇通过最简单案例详细讲解unittest执行顺序. 一.案例分析 1.先定义一个测试类,里面写几个简单的case # coding:utf-8import unittestimport timeclass Test

Selenium2+python自动化59-数据驱动(ddt)【转载】

本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/unittest/ 前言 在设计用例的时候,有些用例只是参数数据的输入不一样,比如登录这个功能,操作过程但是一样的.如果用例重复去写操作过程会增加代码量,对应这种多组数据的测试用例,可以用数据驱动设计模式,一组数据对应一个测试用例,用例自动加载生成. 一.环境准备 1.安装ddt模块,打开cmd输入pip install ddt在线安装 >>pip install ddt 二.数据驱

Selenium2+python自动化47-判断弹出框存在(alert_is_present)

前言 系统弹窗这个是很常见的场景,有时候它不弹出来去操作的话,会抛异常.那么又不知道它啥时候会出来,那么久需要去判断弹窗是否弹出了. 本篇接着Selenium2+python自动化42-判断元素(expected_conditions)讲expected_conditions这个模块 一.判断alert源码分析 class alert_is_present(object):    """ Expect an alert to be present.""&q

Selenium2+python自动化33-文件上传(send_keys)

前言 文件上传是web页面上很常见的一个功能,自动化成功中操作起来却不是那么简单. 一般分两个场景:一种是input标签,这种可以用selenium提供的send_keys()方法轻松解决: 另外一种非input标签实现起来比较困难,可以借助autoit工具或者SendKeys第三方库. 本篇以博客园的上传图片为案例,通过send_keys()方法解决文件上传问题 一.识别上传按钮 1.点开博客园编辑器里的图片上传按钮,弹出”上传本地图片”框. 2.用firebug查看按钮属性,这种上传图片按钮

Selenium2+python自动化41-绕过验证码(add_cookie)

前言 验证码这种问题是比较头疼的,对于验证码的处理,不要去想破解方法,这个验证码本来就是为了防止别人自动化登录的.如果你能破解,说明你们公司的验证码吗安全级别不高,那就需要提高级别了. 对应验证码,要么是让开发在测试环境弄个万能的验证码,如:1234,要么就是尽量绕过去,如本篇介绍的添加cookie的方法. 一.fiddler抓包 1.前一篇讲到,登录后会生成一个已登录状态的cookie,那么只需要直接把这个值添加到cookies里面就可以了. 2.可以先手动登录一次,然后抓取这个cookie,

Selenium2+python自动化,判定元素是否存在

Selenium2+python自动化,判定元素是否存在 前言 最近有很多小伙伴在问如何判断一个元素是否存在,这个方法在selenium里面是没有的,需要自己写咯. 元素不存在的话,操作元素会报错,或者元素有多个,不唯一的时候也会报错.本篇介绍两种判断元素存在的方法. 一.find_elements方法判断 1.find_elements方法是查找页面上所有相同属性的方法,这个方法其实非常好用,能熟练掌握技巧的不多,小编这次就发挥它的功效 2.由于元素定位的方法很多,所以判断的时候定位方法不统一