码迷,mamicode.com
首页 > 编程语言 > 详细

selenium+python实现自动化登录

时间:2017-06-14 16:40:18      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:cookies   决定   登陆   2.0   .com   pass   工具   fail   htm   

工作需要实现一个微博自动登录的操作,在网上差了一些资料,决定使用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的最新版本,都会报错)

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

 

selenium+python实现自动化登录

标签:cookies   决定   登陆   2.0   .com   pass   工具   fail   htm   

原文地址:http://www.cnblogs.com/taurusfy/p/7007014.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!