selenium实例自动登陆知乎

selenium实例自动登陆知乎

工作中会时常遇到重复劳动的事情,比如填写工时。此时你会有几种选择:
1. 手动填写
2. 程序自动填写
想偷懒当然就选了第二种。这里使用selenium1来控制浏览器自动浏览填写来代替手工。当然你也可以直接用get/post请求直接提交数据,但前提你要花很多时间去研究这些api的使用,还有各种参数的生成。

环境配置

  • win10 64位系统
  • Python3.6.2
  • Chrome浏览器

步骤

1.使用pip安装selenium

pip install selenium

2.下载并配置selenium的Chrome驱动
https://chromedriver.storage.googleapis.com/index.html?path=2.35/
我这里下载的是chromedriver_win32.zip
解压后将chromedriver.exe拷贝到任意一个环境变量的目录,我的python安装目录已经配到环境变量里面了,所以我只需要将其拷贝到python安装目录。
打开CMD,输入命令chromedriver,看到下面输出说明driver已经正确配置
selenium实例自动登陆知乎_第1张图片

3.编写代码
这里主要用到xpath2来定位element

from selenium import webdriver

#初始化driver
driver = webdriver.Chrome()
#打开知乎登录页面
driver.get('https://www.zhihu.com/signup')
#默认是注册界面,这里需要先找到切换登录的按钮
signup_switch_bt = driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[2]/span')
#如果内容显示登录,则证明在注册页面,需要点击一下切换到登录页面
if signup_switch_bt.text == '登录':
    signup_switch_bt.click()
#找到填写用户名的输入框
uname_textfield = driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/div[1]/div[2]/div[1]/input')
#找到填写密码的输入框
pwd_textfield = driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/div[2]/div/div[1]/input')
#找到登录按钮
signup_bt = driver.find_element_by_xpath('//*[@id="root"]/div/main/div/div/div/div[2]/div[1]/form/button')
#填写用户名,需要替换为你的用户名
uname_textfield.send_keys('user_name')
#填写密码,需要替换为你的密码
pwd_textfield.send_keys('your_passwd')
#点击登录
signup_bt.click()

总结

本文使用selenium,完成了知乎的自动登录功能。示例代码较为简单,没有加入对网页是否加载完成的判断,没有对异常处理,没有解决验证码检验,仅作为示例所用。

Other

selenium的使用可能会遇到:
1.IE浏览器配置问题:我64位的电脑不能使用64位的IE driver,还有IE浏览器需要设置一些选项
2.网页如果使用了Frame,并且要定位的element再Frame里面,需要用api:driver.switch_to.frame(‘leftFrame’)切换后才能够定位。

Reference

  1. https://www.seleniumhq.org/
  2. https://sites.google.com/a/chromium.org/chromedriver/
  3. http://www.w3school.com.cn/xpath/xpath_intro.asp

  1. 自动化测试工具,详细信息参考官网. ↩
  2. XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。w3school里的简介 ↩

你可能感兴趣的:(Python)