前言

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

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

一、登录

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()

Selenium2+python自动化10-登录案例【转载】的更多相关文章

  1. Selenium2+python自动化28-table定位【转载】

    前言 在web页面中经常会遇到table表格,特别是后台操作页面比较常见.本篇详细讲解table表格如何定位. 一.认识table 1.首先看下table长什么样,如下图,这种网状表格的都是table ...

  2. Selenium2+python自动化7-xpath定位【转载】

    前言 在上一篇简单的介绍了用工具查看目标元素的xpath地址,工具查看比较死板,不够灵活,有时候直接复制粘贴会定位不到.这个时候就需要自己手动的去写xpath了,这一篇详细讲解xpath的一些语法. ...

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

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

  4. Selenium2+python自动化51-unittest简介【转载】

    前言 熟悉java的应该都清楚常见的单元测试框架Junit和TestNG,这个招聘的需求上也是经常见到的.python里面也有单元测试框架-unittest,相当于是一个python版的junit. ...

  5. Selenium2+python自动化74-jquery定位【转载】

    转至博客:上海-悠悠 前言 元素定位可以说是学自动化的小伙伴遇到的一道门槛,学会了定位也就打通了任督二脉,前面分享过selenium的18般武艺,再加上五种js的定位大法. 这些还不够的话,今天再分享 ...

  6. selenium+python自动化之登录案例

    一.登录 1.先打开浏览器 2.打开论坛主页:http://www.hordehome.com/ 3.查找元素之前可以先设置元素等待:implicitly_wait() 4.点登录按钮,弹出登录框 5 ...

  7. Selenium2+python自动化69-PhantomJS使用【转载】

    前言 PhantomJS是一个没有界面的浏览器,本质上是它其实也就是一个浏览器,只是不在界面上展示. PhantomJS非常适合爬虫方面,很多玩爬虫的都喜欢用这个浏览器. 一.PhantomJS环境准 ...

  8. Selenium2+python自动化4-Pycharm使用【转载】

    前言 在写脚本之前,先要找个顺手的写脚本工具.python是一门解释性编程语言,所以一般把写python的工具叫解释器.写python脚本的工具很多,小编这里就不一一列举的,只要自己用着顺手就可以的, ...

  9. Selenium2+Python自动化-处理浏览器弹窗(转载)

    本篇转自博客:上海-小T 原文地址:http://blog.csdn.net/real_tino/article/details/59068827 我们在浏览网页时经常会碰到各种花样的弹窗,在做UI自 ...

随机推荐

  1. Java文件 ---RandomAccessFile示例

    RandomAccessFile是用来访问那些保存数据记录的文件的,你就可以用seek( )方法来访问记录,并进行读写了.这些记录的大小不必相同:但是其大小和位置必须是可知的.但是该类仅限于操作文件 ...

  2. 如何让button保持点击状态

    http://blog.csdn.net/u010957508/article/details/38385207 他的原理就是在代码里面: view.setSelected(true); 而其他的: ...

  3. ios在tableview里面加subview后在ip4和ip5上显示不一样的问题

    文章链接:http://quke.org/post/ios-tableview-addsubview-height.html (转载时请注明本文出处及文章链接) 我在在tableview里面加subv ...

  4. css改变光标

    <span style="cursor:auto"> Auto</span><br /> <span style="cursor ...

  5. 《Cracking the Coding Interview》——第3章:栈和队列——题目3

    2014-03-18 05:17 题目:设计一个栈,这个栈实际上由一列子栈组成.每当一个子栈的大小达到n,就新产生下一个子栈.整个栈群对外看起来就像普通栈一样,支持取顶top().压入push().弹 ...

  6. linux下多线程断点下载工具-axel

    今天要下载一下14G左右的文件,用wget约10小时,后来发现linux下有个多线程支持断点续传的下载工具axel,试了一下,下载速度大大增加. 包地址:http://pkgs.repoforge.o ...

  7. 201621123033 《Java程序设计》第8周学习总结

    第八次作业 1. 本周学习总结 以你喜欢的方式(思维导图或其他)归纳总结集合相关内容. 2. 书面作业 1. ArrayList代码分析 1.1 解释ArrayList的contains源代码 首先调 ...

  8. PHP面向对象单例模式(懒汉式)

    知识点: 一.三私一公: ①.私有静态属性,又来储存生成的唯一对象 ②.私有构造函数 ③.私有克隆函数,防止克隆——clone ④.公共静态方法,用来访问静态属性储存的对象,如果没有对象,则生成此单例 ...

  9. 有许多部分没有在cgroup中显示啊,current/high/low/min等等

    没看见current/high/low/min 在cgroup中的显示内容

  10. asp.net 条码 一维条码 生成, 一共有32中格式类型

    想用asp.net 实现条码功能,网上找了代码都不全. 终于找到了一个非常全的DLL 是winForm的,原以为不能用在WEB 上结果 可以使用. 首先,引用 DLL 不必说了,下面是 使用设置.还有 ...