0


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

,同时配合

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


本文转载自: https://blog.csdn.net/2401_84219403/article/details/138396344
版权归原作者 MagnusChuen 所有, 如有侵权,请联系我们删除。

“selenium使用笔记”的评论:

还没有评论