工作需要实现一个微博自动登录的操作,在网上差了一些资料,决定使用selenium+python实现

selenium 是一个web的自动化测试工具,主流一般配合java或者python使用,我这里使用的是python,可支持的浏览器基本包括所有主流浏览器IE、Mozilla Firefox、Google Chrome。

安装过程不再赘述,但是后续使用时,发现很多报错与版本兼容性有关,因此这里列出可用的版本搭配:

python2.7

selenium3.0.2

火狐驱动geckodriver.exe  版本v0.14.0  (使用高版本会出现异常报错)

火狐浏览器52.0.2 (32 位)  (版本太低或53的最新版本,都会报错)

 #encoding=utf-8
from selenium import webdriver
import time
import os #模拟登陆weibo def getCookies(weibo):
""" 获取Cookies """
cookies = []
driver = webdriver.Firefox()
time.sleep(3) #sleep一下,否则有可能报错
driver.get("https://weibo.com/login/")
#cur_path=os.getcwd()
#fileSuc = open(cur_path+"/login.html", 'w')
#fileSuc.write(driver.page_source)
#用户名 密码
elem_user = driver.find_element_by_xpath('//input[@id="loginname"]')
elem_user.send_keys('*****@163.com') #浏览器版本不匹配的时候这里可能报错
elem_pwd = driver.find_element_by_xpath('//input[@type="password"]')
elem_pwd.send_keys('*****') commit = driver.find_element_by_xpath('//a[@node-type="submitBtn"]')
commit.click()
time.sleep(3)
#fileSuc1 = open(cur_path+"/weibo2.html", 'w')
#fileSuc1.write(driver.page_source)
#print driver.title
#登录成功后获取cookie
cookie = {}
if "微博-随时随地发现新鲜事" in driver.title:
for elem in driver.get_cookies():
cookie[elem["name"]] = elem["value"]
if len(cookie) > 0:
logger.warning("Get Cookie Successful: %s" % account)
cookies.append(cookie)
continue
else:
logger.warning("Get Cookie Failed: %s!" % account) driver.close()
driver.quit()
return cookies cookies = getCookies(myWeiBo)
print cookies
logger.warning("Get Cookies Finish!( Num:%d)" % len(cookies))
find_element_by_xpath用来定位控件的位置,定位不到的时候,可以把网页的代码保存下来看看是否有对应的控件,如果是安全控件或者登录在js里实现,这种方法是获取不到的。
另外还有find_element_by_name、find_element_by_id的方法,但是我使用的时候出现找不到情况,怀疑是浏览器版本不匹配的原因。

selenium+python实现自动化登录的更多相关文章

  1. 用python实现自动化登录禅道系统 设置定时器自动执行脚本

    由于各种原因,我想试下用python实现自动登录禅道系统,并且每天定时执行.(本人第一次接触自动化,在大佬眼中门槛都没摸到的类型) 首先缕清思路: 1.实现自动登录禅道系统,用selenium实现2. ...

  2. (selenium+python)_UI自动化01_Mac下selenium环境搭建

    前言 Selenium 是一个用于Web网页UI自动化测试的开源框架,可以驱动浏览器模拟用户操作.支持多种平台(Windows.Mac OS.Linux)和多种浏览器(IE.Firefox.Chrom ...

  3. python selenium chrome 实现自动化登录

    1.环境安装 selenium的开发文档网址(英语好的可以直接看这个,写的很详细):http://selenium-python.readthedocs.io/ 因为实现的时候使用的是谷歌浏览器,在运 ...

  4. selenium+python 搭建自动化环境

    一.以搭建windows平台为例 准备工具如下: 1)下载Python 2)安装,配置环境变量 3)安装selenium,通过pip安装,命令如下:  pip install selenium 方式二 ...

  5. 【原创】selenium+python+openpyxl实现登录自动化测试,自动读取excel用例数据,并将数据结果自动写入到excel

    # -*- coding: utf-8 -*- from selenium import webdriver from openpyxl import load_workbook from time ...

  6. 【Selenium + Python】自动化测试之发送邮件正文以及附件同时发送

    废话不多说,直接上代码: import unittest import time import os import smtplib from HTMLTestRunner import HTMLTes ...

  7. selenium+python编写自动化脚本时,定位frame中对象操作

    在web应用中经常会出现frame嵌套的应用,假设页面上有A,B两个frame,其中B在A内,那么定位B中的内容则需要先到A,再到B.switchTo().frame方法可以把当前定位的主题切换到fr ...

  8. 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...

  9. 一次简单完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试,手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文就基于python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化 ...

随机推荐

  1. Radar Installation(利用数据有序化进行贪心选择)

    English appre: an infinite straight line:一条无限长的直线 on the coasting:在海岸线上 Cartesian coordinate system, ...

  2. leetcode全部滑动窗口题目总结C++写法(完结)

    3. 无重复字符的最长子串 A: 要找最长的无重复子串,所以用一个map保存出现过的字符,并且维持一个窗口,用le和ri指针标识.ri为当前要遍历的字符,如果ri字符在map中出现过,那么将le字符从 ...

  3. 数据库 concat 与 ||

    mysql中用concat,oracle中concat和||都有,都是做字符串拼接的 oracle简单实例: 1.建表 CREATE TABLE tab1 (col1 VARCHAR2(6), col ...

  4. 第三十四篇 玩转数据结构——哈希表(HashTable)

    1.. 整型哈希函数的设计 小范围正整数直接使用 小范围负整数整体进行偏移 大整数,通常做法是"模一个素数"   2.. 浮点型哈希函数的设计 转成整型进行处理   3.. 字符串 ...

  5. AcWing 282. 石子合并

    #include <iostream> #include <algorithm> using namespace std; ; int n; int s[N];//前缀和 in ...

  6. CAD 批量提取点坐标,实现坐标的快速提取

    原创 CAD 批量提取点坐标,实现坐标的快速提取 2018-08-07 20:36:13 caohongji 阅读数 13678   版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议 ...

  7. (转)Java中的String与常量池

    Java中的String与常量池 转自:http://developer.51cto.com/art/201106/266454.htm string是java中的字符串.String类是不可变的,对 ...

  8. 【转载】Java的JVM原理

    转自:http://blog.csdn.net/witsmakemen/article/details/28600127/ 一.Java虚拟机的生命周期: Java虚拟机的生命周期 一个运行中的Jav ...

  9. vue项目中解决跨域问题axios和

    项目如果是用脚手架搭建的(vue cli)项目配置文件里有个proxyTable proxyTable是vue-cli搭建webpack脚手架中的一个微型代理服务器,配置如下 配置和安装axios 安 ...

  10. 【Thinkphp】记录一次分页的实现

    thinkphp分页非常简单 1,控制器渲染数据: $studentList = StudentDb::paginate(5); $this->view->assign('list',$s ...