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代码