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

后续学习时发现新版本已经弃用了这些方法

image-20211126204214073.png

更改方法如下

首先从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( ̄▽ ̄)ブ

最后修改:2022 年 12 月 29 日
如果觉得我的文章对你有用,请随意赞赏