使用python selenium模拟登陆

system:linux 16.04 64位

selenium:3.4

firefox:65

geckodriver:0.23.0

 

“白云黄鹤bbs”一段时间不登陆,账号就会被注销,但是我总是有事查询的时候才上它,结果下次一登录发现账号就不见了。没办法,只好写个自动登陆的脚本来每天登陆下,顺便还能提升等级。

话不多说,代码贴上:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options
import time

options = Options()
options.headless = True
driver=webdriver.Firefox(executable_path = "/home/lc/Documents/src/python/geckodriver",options=options)  #启动火狐浏览器

driver=webdriver.Firefox(executable_path = "/home/lc/Documents/src/python/geckodriver",options=options)  #启动火狐浏览器

url='https://bbs.whnet.edu.cn/'

driver.get(url)  #用浏览器访问url

print ('before login=========')



driver.find_element_by_id("id").clear()  #查看源码并填入源码中用户名    的id,比如‘login_email’,该行是用来清除在登录前登录框中的字

driver.find_element_by_id("id").send_keys("you username") #输入用户名

driver.find_element_by_id("pw").send_keys("you password")    #输入密码

driver.find_element_by_xpath("//form[@name='wg']/input[@name='login']").click()   #查看源码中登录按钮的class名

time.sleep(5)

print ('After login========')

title=driver.title

print (title)

now_url=driver.current_url

print (now_url)

driver.quit()


鉴于鄙人也是第一次使用 selenium 来做这个事情,所以碰到的问题颇多,首先是firefox、selenium和geckodriver的版本对应问题.我的selenium是通过系统包管理直接安装的,所以是最新的版本 3.4 的。通过一下命令可以查看selenium版本:

$ python
>>>import selenium
>>>help(selenium)

3.X的selenium需要配合版本号47以上的firefox使用,我的firefox也是最新的,所以没问题,那么geckodriver我选的是0.23.0,不是最新的,但是没出现问题。

 

第二个问题是options

我使用的浏览器是无界面的,所以必须有以下代码:

from selenium.webdriver.firefox.options import Options
options = Options()
options.headless = True
driver=webdriver.Firefox(options=options)  #启动火狐浏览器

否则会报错。

第三是如果你的geckodriver没有设置环境变量,那么你必须把它的路径添加进去:

driver=webdriver.Firefox(executable_path = "/home/lc/Documents/src/python/geckodriver")

最后一点是使用driver.find_element_by_xpath() 定位网页元素,这点必须要学会。

 

第一次用,很多bug虽然消除了,但是还是知其然,不知其所以然,后面会继续补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值