一. 浏览器控制
二. 元素查找
from selenium.webdriver.by import By
三. 鼠标控制
需要运用ActionChains类
button = driver.find_elements(By……)
1.单击鼠标左键:button.click()
2.其他:
from selenium.webdriver.common.action_chains import ActionChains
单击右键:ActionChains(driver).context_click(button).perform()
双击:ActionChains(driver).double_click(button).perform()
拖动鼠标:需设置两个参数:source, target. 分别表示拖动的起点元素和终点元素
ActionChains(driver).draganddrop(source, target).perform()
悬停(一般用于显示隐藏的下拉框):ActionChains(driver).movetoelement(button).perform()
四. 键盘控制
from selenium.webdriver.common.keys import Keys
elem = driver.find_element(By……)
操作:
elem.send_keys()
elem.send_keys(Keys.ENTER) 回车
elem.send_keys(Keys.CONTROL, 'a') 全选
elem.send_keys(Keys.CONTROL, 'c') 复制
elem.send_keys(Keys.CONTROL, 'v') 粘贴
elem.sendkeys(Keys.BACKSPACE) 删除一个字符
其他:
五. 元素等待
(一)显性等待:
设置超时时间,每一段时间就检测一次某元素是否存在,若存在则执行后续内容,若超过最大时间(超时时间)则抛出超时异常(
TimeoutException
)。需使用
WebDriverWait
,同时配合
until
或
not until
1.WebDriverWait(driver, timeout, pollfrequency=0.5, ignoredexceptions=None)
timeout设置超时时间
poll_frequency设置检查间隔,默认为0.5秒
2.until(method, message=’ ‘) until_not(method, message=’ ')
method:指定预期条件的判断方法,在等待期间,每隔一段时间调用该方法,判断元素是否存在,直到元素出现。
until_not
正好相反,当元素消失或指定条件不成立,则继续执行后续代码message: 抛出TimeoutException异常,并且显示message指定的内容
例:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
element = WebDriverWait(driver, 5, 0.5).until( EC.presenceofelement_located((By.ID, 'kw')), message='超时啦!')
(二)隐性等待:
也是指定一个超时时间,如果超出这个时间指定元素还没有被加载出来,就会抛出
NoSuchElementException
异常;但隐式等待是全局性的,即运行过程中,如果元素可以定位到,它不会影响代码运行,但如果定位不到,则它会以轮询的方式不断地访问元素直到元素被找到,若超过指定时间,则抛出异常。
implicitly_wait(timeout)
(三)强制等待
time.sleep()
相较于隐性等待效率更低
六. 弹窗处理
(一)定位弹窗:
switch_to.alert 可自动获取弹窗
(二)操作
七. 文件上传与下载
(一)上传
eg:
from selenium import webdriver
from pathlib import Path
from time import sleep
driver = webdriver.Chrome()
file_path = Path(Path.cwd(), '上传下载.html')
driver.get('file:///' + str(file_path))
driver.findelementbyxpath('//[@name="upload"]').send*keys(str(file_path))
(二)下载
chrome 浏览器要下载文件,需 addexperimentaloption 添加 prefs 参数。
download.default_directory:设置下载路径。
profile.defaultcontentsettings.popups:0 禁止弹出窗口。
eg:
from selenium import webdriver
prefs = {'profile.defaultcontentsettings.popups': 0, 'download.defaultdirectory': str(Path.cwd())} option = webdriver.ChromeOptions() option.addexperimentaloption('prefs', prefs) driver = webdriver.Chrome(options=option) driver.get("") driver.findelementby_xpath('').click()
driver.switchto.window(driver.windowhandles[-1])
driver.findelementbyxpath('./html').sendkeys('thisisunsafe')
八. cookies操作
get_cookies:以字典的形式返回当前会话中可见的 cookie 信息
get_cookie(name):返回 cookie 字典中 key == name 的 cookie 信息
addcookie(cookiedict):将 cookie 添加到当前会话中
delete_cookie(name):删除指定名称的单个 cookie
deleteallcookies():删除会话范围内的所有 cookie
九. 执行javascript操作
常用:
window.scrollBy(0,document.body.scrollHeight)
return document.body.scrollHeight
语法:
execute_script()
十. 其他
driver.current_url
driver.page_source
driver.title
driver.name
driver.getscreenshotas_file()
driver.getscreenshotas_png()
driver.getwindowsize()
driver.getwindowrect()
driver.getwindowposition()
版权归原作者 MagnusChuen 所有, 如有侵权,请联系我们删除。