学校要升级教务系统了,还把登录换成了统一验证。研究了半天没看懂操作,被迫放弃小而美的登录方式,转而使用 selenium 和 ChromeDriver 来模拟浏览器登陆。
之前有听郭说过 selenium,这次自己来试试。
安装 ChromeDriver
前往官网下载 https://chromedriver.chromium.org/downloads
需要先检查本机安装的 Chrome 版本,然后下载对应版本的 ChromeDriver
或者通过 Homebrew 安装
brew install chromedriver
安装 selenium
pip3 install selenium
模板代码
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
chrome_options = Options()
# headless 将会使用无界面的 Chrome,其余参数针对 docker 环境进行优化,需要时解除注释
# chrome_options.add_argument('--headless')
# chrome_options.add_argument('--no-sandbox')
# chrome_options.add_argument('--disable-dev-shm-usage')
# chrome_options.add_experimental_option("prefs", {"profile.managed_default_content_settings.images": 2})
# chrome_options.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = webdriver.Chrome(options=chrome_options)
try:
# 控制操作
driver.get('https://jackyu.cn/')
WebDriverWait(driver, 5).until(
EC.presence_of_element_located((By.ID, 'menu-item-165'))
)
driver.find_element_by_id('menu-item-165').click()
time.sleep(10)
finally:
driver.quit()
运行代码,脚本将会先打开 Chrome 浏览器,访问 https://jackyu.cn/,等待页面加载出 #menu-item-165 元素(显式等待),点击这个元素,对应将会跳转到关于页面,然后等待五秒,关闭浏览器。
本文只是介绍一下入门的基本操作,更多使用方法请参考官方文档 https://selenium-python-zh.readthedocs.io/en/latest/getting-started.html
文章最后修订于 2021年8月19日
评论 (0)