- selenium自动化模拟
- 常规操作
- 引包
- 加载驱动
- 定位元素
- 获取元素属性
- 设置元素属性
- 模拟点击
- 模拟输入
- 模拟输入清除
- 获取当前url
- 获取页面快照
- 页面打开
- 执行js脚本
- 窗口控制
- 子父框切换
- 获取窗口处理器
- 切换操作窗口(窗口跳转)
- 获取当前操作窗口
- 窗口关闭
- 浏览器关闭
- 页面前进后退
- 弹窗处理
- 页面加载等待
- 导包
- 等待元素加载
- 鼠标模拟
- 引包
- 创建对象
- 移动到元素
- 双击
- 单击
- 单击并hold
- 右键单击
- 拖拽
- Select操作
- 导包
- 创建对象
- 选择
- 遍历选项
- 获取第一个被选择的选项
- 撤销所以选项
- Cookies
- 获取cookies
- 删除
from selenium import webdriver加载驱动
#加载谷歌驱动 driver = webdriver.Chrome(os.path.join(path,driverName))定位元素
#通过xpath定位
driver.find_element_by_xpath('xpath表达式')
#通过css选择器定位
driver.find_element_by_css_selector('.UserName')
#通过元素id定位
driver.find_element_by_id('id')
获取元素属性
element = driver.find_element_by_xpath('xpath表达式')
value = element.get_attribute("value")
设置元素属性
element.set_attribute("key","value")
模拟点击
#获取元素
item = driver.find_element_by_css_selector('#UserName')
#触发点击
item.click()
模拟输入
#获取元素
item = driver.find_element_by_css_selector('#UserName')
#触发点击
item.send_keys('输入内容')
模拟输入清除
# 清除输入框内容
driver.find_element_by_id("k").clear()
获取当前url
driver.current_url获取页面快照
# 获取页面快照
driver.save_screenshot("webPage.png")
页面打开
# get方法会一直等到页面被完全加载,然后才会继续程序
driver.get("http://www.baidu.com/")
执行js脚本
driver.execute_script("window.close();")
窗口控制
控制当前驱动操作的window和frame
注意:点击按钮导致新页面打开,并不会自动切换驱动当前操作的window handler,在父frame中是无法直接操作子frame的元素,需要进行切换操作。
子父框切换#切换子frame
iframe = driver.find_element_by_xpath('//*[@id="stop"]/iframe')
driver.switch_to.frame(iframe)
#切换父frame
driver.switch_to.parent_frame()
获取窗口处理器
#通过内部window_handles列表变量 driver.window_handles #获取某一个处理器 driver.window_handles[0]切换操作窗口(窗口跳转)
#通过窗口处理器进行跳转 driver.switch_to.window(driver.window_handles[0])获取当前操作窗口
driver.current_window_handle窗口关闭
#关闭当前窗口,最后一个会关闭浏览器 driver.close()浏览器关闭
# 关闭浏览器 driver.quit()页面前进后退
#回到前一页 driver.back() #前进 driver.forward()弹窗处理
#确定 driver.switch_to.alert.accept()页面加载等待 导包
# ui模块里面的WebDriverWait类,用来循环等待 from selenium.webdriver.support.ui import WebDriverWait #presence_of_element_located类,条件判断 from selenium.webdriver.support.expected_conditions import presence_of_element_located from selenium.webdriver.common.by import By等待元素加载
try:
# 页面等待最多10秒,等待id="myElement"出现,超时抛出异常
element = WebDriverWait(driver, 10).until(
expected_conditions.presence_of_element_located((By.ID, "myElement"))
)
鼠标模拟
引包
#导入ActionChains类 from selenium.webdriver import ActionChains创建对象
action = ActionChains(driver)移动到元素
#鼠标移动到元素 action.move_to_element(element).perform()双击
#鼠标双击 action.move_to_element(element).double_click(element).perform()单击
#鼠标单击 action.move_to_element(element).click(element).perform()单击并hold
#鼠标单击并hold住 action.move_to_element(element).click_and_hold(element).perform()右键单击
#右键单击 action.move_to_element(element).context_click(element).perform()拖拽
#拖拽元素1到元素2 action.drag_and_drop(element1, element2).perform()Select操作 导包
#导包方式一 from selenium.webdriver.support.ui import Select #导包方式二 from selenium.webdriver.support.select import Select创建对象
# 找到 name 的选项卡
select = Select(driver.find_element_by_id('id'))
选择
select.select_by_index(1)
select.select_by_value("0")
select.select_by_visible_text(u"选项")
遍历选项
for option in select.options:
value = option.get_attribute("value")
获取第一个被选择的选项
select.first_selected_option撤销所以选项
select.deselect_all()Cookies 获取cookies
#返回可迭代对象 driver.get_cookies()删除
# 通过名字
driver.delete_cookie("CookieName")
# 删除所有
driver.delete_all_cookies()
’



