博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
selenium+python实现自动化登录
阅读量:4485 次
发布时间:2019-06-08

本文共 2050 字,大约阅读时间需要 6 分钟。

工作需要实现一个微博自动登录的操作,在网上差了一些资料,决定使用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     #登录成功后获取cookie30     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             continue38     else:39         logger.warning("Get Cookie Failed: %s!" % account)40     41     driver.close()  42     driver.quit()  43     return cookies44 45 cookies = getCookies(myWeiBo)46 print cookies47 logger.warning("Get Cookies Finish!( Num:%d)" % len(cookies))
find_element_by_xpath用来定位控件的位置,定位不到的时候,可以把网页的代码保存下来看看是否有对应的控件,如果是安全控件或者登录在js里实现,这种方法是获取不到的。
另外还有find_element_by_name、find_element_by_id的方法,但是我使用的时候出现找不到情况,怀疑是浏览器版本不匹配的原因。

 

转载于:https://www.cnblogs.com/taurusfy/p/7007014.html

你可能感兴趣的文章
WebClient.UploadValues Post中文乱码的解决方法
查看>>
在马耳他一本签名纪念册上的题词
查看>>
上传文件以二进制的形式存储
查看>>
html判断IE版本
查看>>
进制转换——9018——1065
查看>>
农奴翻身把歌唱
查看>>
Java删除文件夹下所有文件
查看>>
32位电脑“内置类型"所占空间大小
查看>>
NodeJS FTP模块使用
查看>>
内存管理2 - Win32汇编语言055
查看>>
Django---过滤器的使用
查看>>
Django【设计】同功能不同实现模式的兼容性
查看>>
用css3制作旋转加载动画的几种方法
查看>>
web: 屏蔽button元素的空格键和enter响应
查看>>
python
查看>>
C/C++中用va_start/va_arg/va_end实现可变参数函数的简单例子
查看>>
Ubuntu16.04安装mac主题(转载)
查看>>
java基础篇-环境变量的配置
查看>>
Callable 的使用
查看>>
js数据类型
查看>>