web自动化(python)——selenium工具基本使用
2024-10-09 17:48:37
WebDriver基本操作
生成driver——启动浏览器
#启动谷歌浏览器,预先安装chromedrvier插件
from selenium import webdriver
driver = webdriver.Chrome()
打开页面
driver.get(url)
窗口操作
大小调整
# 窗口最大化
driver.maxmize_window()
# 窗口最小化
driver.minmize_window()
# 设定宽高,单位px
driver.set_window_size()
前进后退
# 后退
driver.back()
# 前进
driver.forward()
# 刷新
driver.refresh()
关闭和退出
# 关闭
driver.quit()
# 退出
driver.close()
定位方式
分类:
element和element(返回列表)
定位方式
# 利用ID定位
driver.find_element_by_id(cont)
# 利用NAME定位
driver.find_element_by_name(cont)
# 利用CLASS_NAME定位
driver.find_element_by_class_name(cont)
# 利用CSS_SELECTOR定位
driver.find_element_by_css_selector(cont)
# 利用XPATH定位,分为相对路径和绝对路径
driver.find_element_by_xpath(cont)
# 利用LINK_TEXT定位
driver.find_element_by_link_text(cont)
# 利用TAG_NAME定位
driver.find_element_by_tag_name(cont)
优先级
ID> NAME>CSS_SELECTOR>XPATH
基本键盘鼠标操作
- click() # 单击
- send_keys() # 输入
- clear() # 清空
等待方式
强制等待
import time
time.sleep(S)
隐式等待
driver.implicitly_wait(S)
显示等待
# 导入模块
from selenium.webdriver.support.ui import WebDriverWait
# 打来页面时开始查询元素,找到后立即执行
WebDrivewrWait(driver,timeout,intberval).until(lambda driver: driver.find_XXX(XX))
窗口切换
iframe 切换
# 切进
driver.switch_to.frame(ele)
# 切进去,多层时需要一层一层切换,切换回时直接退回默认位置
driver.switch_to.default_content()
alert (弹窗)切换
# 确定
driver.switch_to.alert.accept()
# 取消
driver.switch_to.alert.dismiss()
windows窗口切换
# 获得句柄的列表
driver.window_handles()
# 跳转窗口,回到首页使用index=0
driver.seitch_to.window(window_handles[index])
下拉选择框
# 导入库
from selenium.Webdriver.support.select import Select
sele_le = driver.find_element_by_id(cont)
# 按下标选择
select(sele_le).select_by_index(intnum)
# 根据值选择
select().deselect_by_visible_text(value)
通过验证码
使用万能验证码(开发设置)
使用添加cookie的方式
免于登录,顺便绕过验证码
driver.add_cookie({"name":"XXX","value":"XXX"})
通过查看接口的方式来获取所有登录时获得的cookie;
图像识别技术(OTP引擎)
屏蔽验证码
文件上传
通过send_keys()
driver.find_element_by_id("Idvalue").send_keys(path)
driver.find_element_by_xpath("").click()
通过Pykeyboara,需要依次安装pyHook和PyUserInput
使用sikulik的jar包
其他,比如AutoIt
鼠标键盘操作
鼠标操作
from selenium.webdriver.common.action_chains import Actionchains
# 用Actionchains增强driver
# 点击右键
ActionChains(driver).context_click(ele).perform()
# 双击
ActionChains(driver).double_click(ele).perform()
# 悬停
ActionChains(driver).move_to_element(ele).perform()
# 长按
ActionChains(driver).click_and_hold(ele).perform()
# ActionChains用于生成用户的行为,所有的行为都存储在ActionChains对象,通过perform()执行存储的行为
键盘操作
from selenium.webdriver.common.keys import Keys
# 直接对元素进行按键操作
ele.send_keys("key")
# 组合按键操作
ele.send_keys(keys.xxx,"key1","key2")
截图
方法一:
driver.get_screenshot_as_file(path+"name.png")
方法二:
# 遇到弹窗就截图
driver.save_screenshot(path+"name.png")
方法三:
# 保存的是base64()格式的文件值,html测试报告里插入图片会用到
s=driver.get_screenshot_as_base64()
方法四:
# 保存二进制文件
S = driver.get_screenshot_as_png()
js注入
移动滚动条
方式1(只支持有ID的滚动条):
js = "var q=document.documentElement.scrollTop=100"
js_n = "var q=document.documentElement.scrollTop=0"
driver.execute_script(js_n)
方式2(拖动到指定元素):
target1=dr.find_element_by_xpath("//*[text()='页面']")
driver.execute_script("arguments[0].scriollIntoView();",target1)
修改属性
# 修改某个元素的属性
js = "document.getElementById('idname').name=value"
driver.execute_script(js)
最新文章
- 来玩Play框架04 表单
- leveldb 性能、使用场景评估
- SectionIndexer示例
- python PIL Image模块
- fis3安装
- JQuery easyui (3) Resizable(调整大小)组件
- 点击按钮改变标签内容(采用lambda函数方式)
- IIS 添加mime 支持 apk,exe,.woff,IIS MIME设置 ,Android apk下载的MIME 设置 苹果ISO .ipa下载mime 设置
- Cordova环境搭建与hello word
- Android SDK Manager 闪退的解决办法
- ogg-oracle to sqlserver
- nodejs爬虫笔记(二)---代理设置
- python 作业 编写登陆接口
- Android 网络框架 OKHttp3
- JavaScript 弹出窗体
- 爬虫----BeautifulSoup模块
- *C#(WPF)--矩阵拖动和矩阵动画(拖动展开,不足动画效果)
- C++标准异常概述
- Dubbo -- 系统学习 笔记 -- API参考手册
- 定时任务,AlarmManager使用