Python Webdriver

写一些自动脚本时(比如自动选课)可以使用Python Webdriver来简化操作

Webdriver可以控制浏览器,自动进行操作
以下以 Chrome 浏览器为例

第一步:配置Chromedriver

查看Chrome的版本,进入官方Chromedriver 索引界面,下载对应版本的Chromedriver
将Chromedriver.exe放到你喜欢的目录下,将该目录添加到环境变量的Path里
进入cmd输入chromedriver回车查看是否安装正确(没有反应可以尝试重启)

第二步:安装Selenium

启动 Python
输入 pip install selenium
(使用清华源安装pip install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium)

第三步:Webdriver操作

进入Python控制台,启动Python

1
2
from selenium import webdriver
driver=webdriver.Chrome()

这个时候可以看到出现了一个Chrome窗口,可以在这个窗口里手动先进行一些操作(比如进入目标网页)
以下是一些基本操作(配合循环和time.sleep可以完成大多数操作)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
driver.get("https://xxx.xxx.xxx") # 打开url
driver.find_element_by_id('main') # 通过id查找网页内控件
driver.find_element_by_name('username') # 通过name定位
driver.find_element_by_xpath('//*[@id="kw"]') # 通过xpath定位,xpath可以在检查中选中对象->Copy->Copy xpath 获得
driver.find_element_by_class_name('content') #通过class name 定位
driver.find_element_by_tag_name("input") # 通过标签名查找
driver.find_element_by_css_selector("p[class=\"content\"]") #根据元素属性查找,可以利用正则表达式过滤
driver.find_element_by_id('button_id').click() # 点击按钮
driver.find_element_by_id('input_id').send_keys('xxx') # 向文本框输入文字
driver.find_element_by_id('input_id').send_keys(Keys.BACK_SPACE) # 回车一下
driver.find_element_by_id('input_id').send_keys(Keys.CONTROL,'a') # 全选
driver.find_element_by_id('input_id').send_keys(Keys.CONTROL,'x') # 剪切
a = driver.window_handles() # 获取所有页面窗口的句柄
b = driver.current_window_handle() # 获取当前所在页面的句柄
driver.switch_to.window(a[1]) # 切换到第二个页面
element = driver.find_element_by_css_selector("#result > iframe")
driver.switch_to.frame(element) # 切换到iframe
driver.switch_to.default_content() # 切换到主frame
driver.switch_to.parent_frame() # 多层iframe时切换到上一级
c = driver.switch_to.alert() # 切换到alert的弹窗
c.text # 返回弹窗文本
c.accept() # 弹窗同意
c.dismiss() # 弹窗取消
driver.add_cookie({'password':"114514"}) # 添加cookie
driver.get_cookie('password') # 获取cookie