python的selenium使用方法,爬取QQ空间

selenium 是一个web的自动化测试工具,不少学习功能自动化的朋友开始首选selenium ,相因为它相比QTP有诸多有点:

  • 免费,也不用再为**QTP而大伤脑筋

  • 小巧,对于不同的语言它只是一个包而已,而QTP需要下载安装1个多G 的程序。

  • 这也是最重要的一点,不管你以前更熟悉C、 java、ruby、python、或都是C# ,你都可以通过selenium完成自动化测试,而QTP只支持VBS

  • 支持多平台:windows、linux、MAC ,支持多浏览器:ie、ff、safari、opera、chrome

  • 支持分布式测试用例的执行,可以把测试用例分布到不同的测试机器的执行,相当于分发机的功能。

搭建平台windows

准备工具如下:
python3.7,PyCharm

如果你是新学python,哪果你没有要用的包是必须依赖于pyhton2.x 的,那么请毫不犹豫的选择python3以上的版本吧!

首先安装selenium
通过pip 安装

pip install selenium 

python的selenium使用方法,爬取QQ空间

由于如果需要使用selenium的话,需要为本机配置对应浏览器的驱动,下面以chomedriver为例,首先安装chromedriver,chromedriver与支持对应的chrome版本如下:

chromedriver版本 支持的Chrome版本

如何查看本机的chrome的版本,具体方法如下:
python的selenium使用方法,爬取QQ空间

chromedriver的下载地址如下:
http://chromedriver.storage.googleapis.com/index.html
chromedriver解压后放到Python或者其他配置了环境变量的目录下。
查询环境变量目录可以使用

where  python

python的selenium使用方法,爬取QQ空间
测试代码及运行结果如下:

from selenium import webdriver
import time
# 打开浏览器
#声明谷歌、Firefox、Safari等浏览器
dr = webdriver.Chrome()

# 打开某个网址
dr.get('https://user.qzone.qq.com/')
# 切换框架
dr.switch_to_frame('login_frame')
time.sleep(1)
dr.find_element_by_link_text('帐号密码登录').click()
# 输入账号
dr.find_element_by_xpath('//*[@id="u"]').send_keys('QQ账号')
time.sleep(2)
dr.find_element_by_xpath('//*[@id="p"]').send_keys('输入QQ密码')
time.sleep(2)
# 点击登录
dr.find_element_by_xpath('//*[@id="login_button"]').click()
time.sleep(2)
# 点击个人档
dr.find_element_by_xpath('//*[@id="menuContainer"]/div/ul/li[6]/a').click()
time.sleep(2)
# 请求好友的空间地址
dr.get('https://user.qzone.qq.com/*****好友的QQ号*****')
time.sleep(3)
# dr.switch_to_alert()
# dr.find_element_by_link_text('我知道了').click()
# 点击好友的个人档
dr.find_element_by_xpath('//*[@id="menuContainer"]/div/ul/li[6]/a').click()
time.sleep(1)
# 切换框架
dr.switch_to_frame('app_canvas_frame')
# 点击好友的个人资料
dr.find_element_by_link_text('个人资料').click()
# dr.find_element_by_xpath('//*[@id="info_link"]').click()
# 输入当前页面的源代码
print(dr.page_source)

dr.get('https://user.qzone.qq.com/*****好友的QQ号*****')
time.sleep(3)
# dr.switch_to_alert()
# dr.find_element_by_link_text('我知道了').click()
dr.find_element_by_xpath('//*[@id="menuContainer"]/div/ul/li[6]/a').click()
time.sleep(1)
dr.switch_to_frame('app_canvas_frame')
dr.find_element_by_link_text('个人资料').click()
# dr.find_element_by_xpath('//*[@id="info_link"]').click()
print(dr.page_source)

find_element_by_xpath 选择xpath解析的位置

send_keys() 向解析位置输入
find_element_by_link_text 是点击text文字
time.sleep(1) 等待时间 给虚拟化操作一个缓冲时间 可以在这些时间内手动进行一些操作
必然 上边QQ密码不想用代码输入时 可以加长等待时间 然后手动输入密码

首次运行可能会报pywin32 错误
解决方法:
1.pywin32下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
python的selenium使用方法,爬取QQ空间
cp后边为python的环境版本 and为系统的操作系统

安装命令为:

pip install pywin32-224-cp37-cp37m-win_amd64.whl

python的selenium使用方法,爬取QQ空间
pip install pywin32的本地路径