Selenium(一)
安装
pip安装selenium模块后即可导入成功
from selenium import webdriver
一下以chrome进行试验
需要安装与自己chrome版本号对应的chromedriver.exe,查看版本号,在chrome地址栏中输入chrome://version
chromedirver下载地址ChromeDriver Mirror (taobao.org)
分别解压放到……/Google/Chrome/Application下和/python3x下
同时将……/Google/Chrome/Application添加到环境变量
设置浏览器驱动
driver = webdriver.Chrome()
selenium元素定位
- find_elements_by_id
- find_elements_by_name
- find_elements_by_class_name
- find_elements_by_tag_name
- find_elements_by_link_text
- find_elements_by_partial_link_text
- find_elements_by_xpath
- find_elements_by_css_selector
后续学习时发现新版本已经弃用了这些方法
更改方法如下
首先从selenium导入by
from selenium.webdriver.common.by import By
使用这些方法时改用find_element(),如下
find_element(by.XPATH,'……')
小补充
xpath定位可以在chrome等浏览器的console控制台下验证
$x(“your_xpath_selector”)
控制浏览器操作
控制浏览器窗口大小
需要参数:driver.set_window_size(……,……) // 设置窗口大小
不需要参数:maximize_window() // 全屏显示
控制浏览器前进和后退
driver.forward() & diver.back()
刷新页面
dirver.refresh()
Webdriver常用方法
clear():清除文本
send_keys(value):模拟按键输入
click():点击元素
submit(): 提交表单
size 返回元素尺寸
text:获取元素的文本
get_attribute(name):获得属性值
小试牛刀
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://xherlock.top/")
# 模拟点击输入事件
input = driver.find_element(By.ID, 'search_input')
input.send_keys("python")
driver.find_element(By.XPATH, '//*[@id="search_submit"]/button').click()
sleep(2) # 这里必须要加个sleep延迟函数
results = driver.find_elements(By.CSS_SELECTOR, '#tab_1 > ul > li > a')
for result in results:
print(result.text)
driver.quit()
遇到的问题:
- 模拟点击后如果不加sleep函数会在未加载完页面时就查找我想要的结果导致,导致无匹配返回值为空
- 要打印元素值(innerHTML)需要在后面加个.text进行查看
初步计划
设计一个抢课脚本(希望来得及,最近功课有点紧,还提前考试了)
先放一张我已有的初步设想o( ̄▽ ̄)ブ