selenium基本使用
selenium基本使用
浏览器基本操作
1. 打开浏览器
chrome = webdriver.Chrome()
2. 进入网页
chrome.driver.get('url')
3. 关闭浏览器
chrome.quit()
chrome.close()
4. 控制浏览器
| 操作 | 方法 |
|---|---|
| 设置窗口大小 | chrome.set_window_size(480,800) |
| 全屏显示 | chrome.maximize_window() |
| 浏览器后退 | chrome.back() |
| 浏览器前进 | chrome.forward() |
| 刷新 | chrome.refresh() |
元素定位
| 定位方法 | 使用方法 |
|---|---|
| id定位 | find_element_by_id() find_element(By.ID,"") |
| name定位 | find_element_by_name() find_element(BY.NAME,"") |
| class定位 | find_element_by_class() find_element(BY.CLASS,"") |
| tag定位 | find_element_by_tag_name() find_element(BY.TAG_NAME,"") |
| link定位 | find_element_by_link_text() find_element(BY.LINK_TEXT,"") |
| partial_link_text定位 | find_element_partial_link_text() find_element(BY.PARTIAL.LINK_TEXT,"") |
| xpath定位 | find_element_xpath() find_element(BY.XPATH,"") |
| css定位 | find_element_css_selector() find_element(BY.CSS_SELECTOR,"") |
WebElement接口常用方法
| 操作 | 方法 |
|---|---|
| 清除输入框中的内容 | clear() |
| 输入内容 | send_keys() |
| 点击 | click() |
| 提交 | submit() |
| 返回元素的尺寸 | size |
| 返回元素的文本 | text |
| 获取属性值 | get_attribute(name) |
| is_displayed() | 设置该元素是否用户可见 |
鼠标事件
鼠标操作的方法封装在ActionChains 类中,使用前先导入
from selenium.webdriver import ActionChains
鼠标操作的常用方法:
| 操作 | 方法 |
|---|---|
| 右击 | context_click() |
| 双击 | double_click() |
| 拖动 | drag_and_drop(source,target) 源元素,目标元素 |
| 悬停 | move_to_element() |
| perform() | 执行所有的ActionChains中存储的行为 |
#!/usr/bin/python3
# -*- condig:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
chrome = webdriver.Chrome()
chrome.get('https://www.baidu.com/')
right_click = chrome.find_element_by_id('su')
#执行鼠标操作
ActionChains(chrome).context_click(right_click).perform()
键盘事件
键盘操作的方法封装在Keys() 类中,使用前先导入
from selenium.webdriver.common.keys import Keys
鼠标操作的常用方法:
| 操作 | 方法 |
|---|---|
| 输入 | send_keys() |
| 删除键 | send_keys(Keys.BACK_SPACE) |
| 空格键 | send_keys(Keys.SPACE) |
| 制表键 | send_keys(Keys.TAB) |
| 回退键 | send_keys(Keys.ESCAPE) |
| 回车键 | send_keys(Keys.ENTER) |
| ctrl+A | send_keys(Keys.CONTROL,'a') |
| ctrl+C | send_keys(Keys.CONTROL,'c') |
| ctrl+X | send_keys(Keys.CONTROL,'x') |
| ctrl+V | send_keys(Keys.CONTROL,'v') |
| ctrl+F1 | send_keys(Keys.CONTROL,'F1') |
| ... | ... |
| ctrl+F12 | send_keys(Keys.CONTROL,'F12') |
#!/usr/bin/python3
# -*- condig:utf-8 -*-
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
chrome = webdriver.Chrome()
chrome.get('https://www.baidu.com/')
chrome.find_element_by_id('kw').send_keys('selenium')
chrome.find_element_by_id('kw').send_keys(Keys.BACKSPACE)
等待
1. 强制等待
import time
time.sleep(5)
2. 隐式等待
driver.implicitly_wait(5)
3. 显示等待
等待某个条件成立时继续执行,否则在达到最大时长时抛出异常(TimeoutException)
WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions_None)
driver:浏览器驱动
timeout:最长超时时间,s
poll_frequency=0.5:检测的时间间隔,默认0.5s
ignored_exceptions_None:超时后的异常信息
WebDriverWait():一般由until()或until_not()方法配合使用
until(method,message='')
调用此方法,提供驱动程序作为一个参数,直到返回值为True
until_not(method,message='')
调用此方法,提供驱动程序作为一个参数,直到返回值为False
多框架切换
switch_to.frame():将当前定位的主题切换frame/iframe
switch_to.default_content():跳回最外层
多窗口切换
switch_to.window()
current_window_handle:获得当前窗口句柄
window_handles:返回所有窗口的句柄到当前会话
警告(弹窗)处理
switch_to_alert
text:返回alert/confirm/prompt中的文字信息
accept():接受现有警告框
dismiss():解散现有警告框
send_keys(keysTOSend):发送文本至警告框
上传下载
上传文件:
send_keys上传
下载文件:(Firefox浏览器)
fp = webdriver.FirefoxProfile()
fp.set_preference("broser.download.folderList",2)
fp.set_preference("broser.download.manager.showWhenStarting",False)
fp.set_preference("broser.download.dir",os.getcwd())
fp.set_preference("broser.helperApps.neverAsk.saveToDisk","application/octet-stream")
broser.download.folderList
设置0代表浏览器的默认下载路径,2表示保存到指定目录
broser.download.manager.showWhenStarting
是否显示开始:True,False
broser.download.dir"
指定保存目录
窗口截图
get_screenshot_as_file("保存位置")
操作Cookie
| 操作 | 方法 |
|---|---|
| 获取所有的cookie信息 | get_cookies() |
| 返回字典的key为“name”的cookie信息 | get_cookie(name) |
| 添加cookie | add_cookie(cookie_dict) |
| 删除cookie | delet_cookie(name,optionsString) |
| 删除所有cookie | delete_all_cookies() |
调用JavaScript
WebDriver提供了execute_script()方法来执行javascript代码
浙公网安备 33010602011771号