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()

 

相关推荐

  1. Selenium笔记

    2024-05-03 12:28:06       20 阅读
  2. 使用Python安装Selenium

    2024-05-03 12:28:06       42 阅读
  3. selenium使用

    2024-05-03 12:28:06       26 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-03 12:28:06       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-03 12:28:06       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-03 12:28:06       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-03 12:28:06       18 阅读

热门阅读

  1. 学习 Rust 的第十四天:如何使用HashMap

    2024-05-03 12:28:06       13 阅读
  2. 大话C语言:第4篇 关键字

    2024-05-03 12:28:06       11 阅读
  3. 产品经理的产品思维

    2024-05-03 12:28:06       9 阅读
  4. RCE学习

    RCE学习

    2024-05-03 12:28:06      13 阅读
  5. Python项目开发实战:密码学之编写加密程序

    2024-05-03 12:28:06       14 阅读
  6. 区块链 | IPFS 工作原理入门

    2024-05-03 12:28:06       10 阅读
  7. 远程为ubuntu安装teamviwer(无UI界面) - 简书

    2024-05-03 12:28:06       15 阅读
  8. 绕过Microsoft登录:安装Windows 11 23H2的两种方法

    2024-05-03 12:28:06       16 阅读