通过参数化的方式,登录QQ空间

实例源码:

# coding:utf-8
from selenium import webdriver
import unittest
import time
class QZone(unittest.TestCase):
"""登录QQ空间"""
def setUp(self):
self.driver = webdriver.Firefox()
base_url = "https://i.qq.com"
self.driver.get(base_url)
self.driver.implicitly_wait(30) def login_qzone(self,user,password):
"""登录方法,账号密码参数化"""
# self.driver.get(self.url + "/".format(self))
self.driver.switch_to_frame('login_frame')
self.driver.find_element_by_id('switcher_plogin').click()
self.driver.find_element_by_id('u').clear()
self.driver.find_element_by_id('u').send_keys(user)
self.driver.find_element_by_id('p').clear()
self.driver.find_element_by_id("p").send_keys(password)
self.driver.find_element_by_id("login_button").click()
time.sleep(3) def is_login_sucess(self):
"""判断是否登录成功"""
try:
result_text = self.driver.find_element_by_xpath(".//*[@id='headContainer']/div[2]/div[1]/span[1]").text
print result_text
return True
except:
return False def test_01(self):
"""登录case01"""
self.login_qzone("1222222", "*********") #运行时输入对应的账号
result = self.is_login_sucess()
self.assertTrue(result) def test_02(self):
"""登录case02"""
self.login_qzone("00000000", "*********") # 运行时输入对应的账号
result = self.is_login_sucess()
self.assertTrue(result) def tearDown(self):
self.driver.quit() if __name__ == "__main__":
unittest.main()

  源码分析:

1、采用单元测试框架unittest

2、setup()、steardown()函数是unittest框架中的起始和结束函数

3、login_qzone()函数是登录函数,用于登录QQ空间,登录时,账号密码采用了参数化的方式

4、is_login_success()函数是用于判断用户是否登录成功,若登录成功,返回登录的QQ空间的用户名,并打印出来

5、test01()、test02(),是测试用例,在测试用例中,调用登录函数进行登录操作,用登录验证函数来判断登录是否成功

遇到的坑:

报错截图

开始一直报这个错,不晓得什么原因,研究了很久;最后发现,是test01()、test02()函数下面注释的原因,去掉注释前面的u就可以正常运行了

虽然问题解决了,但是不晓得什么原因,请知道原因的大神,帮忙解释一下哦

参数化登录QQ空间实例的更多相关文章

  1. 使用Python+Selenium模拟登录QQ空间

    使用Python+Selenium模拟登录QQ空间爬QQ空间之类的页面时大多需要进行登录,研究QQ登录规则的话,得分析大量Javascript的加密解密,这绝对能掉好几斤头发.而现在有了seleniu ...

  2. ClientKey实现登录QQ空间,并设置背景音乐

    ClientKey大家都知道的,通过webbrowser登录后取得Cookie并计算出GTK,即可操作空间的POST. 源代码中引用了苏飞的Http类库,自己修改添加了一些拓展方法. 下载地址:htt ...

  3. C# 13行代码带你模拟登录QQ空间

    最近想做一个QQ空间点赞的小工具,于是晚上下班回来就开始分析PC版的QQ空间,打开Chrome,切换到Network,然后输入账号密码,然后点击登录... 然后,我曹....一堆请求就开始了....搞 ...

  4. C#使用Selenium实现QQ空间数据抓取 登录QQ空间

    经@吃西瓜的星星提醒 首先我们介绍下Selenium Selenium也是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操作一样.支持的浏览器包括IE.Mo ...

  5. QQ空间动态爬虫

    作者:虚静 链接:https://zhuanlan.zhihu.com/p/24656161 来源:知乎 著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 先说明几件事: 题目的意 ...

  6. Python爬虫实战:使用Selenium抓取QQ空间好友说说

    前面我们接触到的,都是使用requests+BeautifulSoup组合对静态网页进行请求和数据解析,若是JS生成的内容,也介绍了通过寻找API借口来获取数据. 但是有的时候,网页数据由JS生成,A ...

  7. curl之采集QQ空间留言

    目录 主要流程解析 注意事项 扩展 完整代码示例 采集效果一览 主要流程解析 首先,打开浏览器登录QQ空间并访问留言列表 由于QQ空间的链接是https,curl方式请求https链接需要突破http ...

  8. QQ空间说说爬虫

    QQ空间说说爬虫 闲来无事,写了一个QQ空间的爬虫,主要是爬取以前的说说,然后生成词云. 这次采用的主要模块是selenium,这是一个模拟浏览器的模块,一开始我不想用这个模块写的,但是后面分析的时候 ...

  9. selenium firefox 提取qq空间相册链接

    环境: selenium-java 3.9.1 firefox 57.0 geckodriver 0.19.1 1.大概的思路就是模拟用户点击行为,关于滚动条的问题,我是模拟下拉箭头,否则只能每个相册 ...

随机推荐

  1. 编写高质量代码改善C#程序的157个建议——建议74:警惕线程的IsBackground

    建议74:警惕线程的IsBackground 在CLR中,线程分为前台线程和后台线程,即每个线程都有一个IsBackground属性.两者在表现形式上的唯一区别是:如果前台线程不退出,应用程序的进程就 ...

  2. web项目不能链接数据库

    mysql的root没有权限 例如,你想root使用123456从任何主机连接到mysql服务器. 1 mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@' ...

  3. javascript高级程序设计读书笔记----引用类型

        Array类型. ECMAScript数组的每一项可以保存任何类型的数据. 数组大小是可以动态调整的. 创建数组第一种基本方式方式: 使用Array构造函数 var colors = new ...

  4. Raspberry Pi 3 安装 Lazarus 1.6.2(2017-02-09更新)

    Raspberry Pi3 Lazarus 1.6.2 安装步骤如下: 安装环境:Raspbian Jessie, RPi3 1.安装subversion和unzip Sudo Apt-get upd ...

  5. xml构建

    <a target="_blank" href="http://wpa.qq.com/msgrd?v=3&uin=346252320&site=qq ...

  6. Unity3D 之PC客户端的分辨率自定义

    在Player Setting中可以自定义分辨率,但在PC版本中如果使用Display Resolution Dialog选项,会发现在分辨率选项中只有预定义的那些,而并没有在Player Setti ...

  7. RobotFramework与Jenkins集成后失败用例重跑

    Jenkins的执行Windows批处理命令填写如下: call pybot.bat -i 1adsInterface 01_测试用例\接口测试用例\adsInterface.txt call pyb ...

  8. 如何执行oracle存储过程,就exec一下?

    不单单是exec一下,还是得分情况: 1.如果是命令窗口就用exec 存储过程名,举个栗子: EXEC procedure;--procedure是存储过程名 2.如果是PL/SQL窗口就用 begi ...

  9. C语言编程学习:写的秒速计算四则混合运算项目

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  10. 使用 dlv 调试go 程序

    目录 使用 dlv 调试smartraiden 一 正常启动 smartraiden 二 dlv 调试 三 dlv attach 使用 dlv 调试smartraiden by 白振轩 使用 dlv ...