selenium使用笔记

一. 浏览器控制

 二. 元素查找

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,同时配合 untilnot 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"]').sendkeys(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()

 

  • 30
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值