selenium自动化模拟
selenium自动化模拟
文章目录
常规操作
引包
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()
’
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)