selenium常用代码
from selenium import webdriver
# 1. 添加浏览器设置参数对象
options = webdriver.ChromeOptions()
# 2. 设置中文,与下载无弹窗指定路径
options.add_argument('lang=zh_CN.UTF-8')
prefs = { 'profile.default_content_settings.popups':0 ,'download.default_directory':'C:\\Users\\del'}
options.add_experimental_option('prefs',prefs)
# 3. 更换请求头
options.add_argument('user-agent="Mozilla/5.0 (iPod; U; CPU iPhone OS 2_1 like Mac OS X; ja-jp) AppleWebKit/525.18.1 (KHTML, like Gecko) Version/3.1.1 Mobile/5F137 Safari/525.20"')
# 4. 生成浏览器对象
driver = webdriver.Chrome("无头浏览器位置",chrome_options=options)
driver.get('链接')
# 5. 使用xpath定位元素与元素属性
# 元素定位
元素 = driver.find_element_by_xpath('xpath表达式')
元素 = driver.find_element_by_link_text('文本链接')
元素 = driver.find_element_by_partial_link_text()('部分文本链接')
# 元素文本属性值
元素.text
# 获取元素属性值
元素.get_attribute(属性)
# 为True为元素可见
元素.is_displayed()
# 为True为元素可操作
元素.is_enabled()
# 6. 控制浏览器窗口大小,像素点宽480高800显示
driver.set_window_size(480,800)
# 7. 前进(返回之前的网页)与后退
driver.forward()
driver.back()
# 8. 模拟浏览器刷新当前页面
driver.refresh()
# 9. 简单元素操作:清除文本、模拟输入、单击元素
元素.clear()
元素.send_Keys('输入的值')
元素.click()
# 10. 提交表单,例如输入之后的回车操作
元素.submit()
# 11. 鼠标事件
# 导入提供数表操作的ActionChains类
from selenium.webdriver.common.action_chains import ActionChains
# 鼠标悬停
ActionChains(driver).move_to_element(元素).perform()
# 鼠标拖拽
ActionChains(driver).drag_and_drop(拖拽元素,目标元素).perform()
# 鼠标右击
ActionChains(driver).context_click(元素).perform()
# 鼠标双击
ActionChains(driver).double_click(元素).perform()
# 12. 键盘事件
from selenium.webdriver.common.keys import Keys
元素.send_keys(Keys.F12)
# 13. 当前界面url
driver.current_url
# 14. 显示等待:每隔一段时间检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions
element = WebDriverWait(driver,最长超时时长,检测的间隔时间默认0.5s).until(
expected_conditions.presence_of_element_located((By.ID,'kw'))
)
# 15. 隐式等待,操作没有定位到元素则等待10s抛出异常
driver.implicitly_wait(10)
# 16.多表单切换:遇到frame或者iframe表单嵌套页面,要定位内嵌页面上的元素
driver.switch_to.frame(id或者name或者定位的frame元素)
# 跳出当前一级表单
driver.switch_to.parent_frame()
# 跳到最外层页面
driver.switch_to.default_content()
# 17. 多窗口切换
driver.switch_to.window(driver.window_handles[0])
# 18. 警告框处理:接受警告框
driver.switch_to_alert().accept
# 19. 操作cookie
# 获取cookie字典
driver.get_cookies()
# 获取cookie值
driver.get_cookie(name)
# 写入cookie
driver.add_cookie(cookie字典)
# 删除cookie信息
driver.delete_cookie(name)
driver.delete_all_cookies()
# 20. 执行js
driver.execute_script(js)
# 21. 窗口截屏
driver.get_screenshot_as_file()
# 22. 关闭窗口
driver.close()
# 23. 退出:退出驱动以及关闭所有窗口
driver.quit()
# 24. 捕捉log
import logging
logging.basicConfig(level=logging.DEBUG)
selenium常用代码的更多相关文章
- Selenium Web 自动化 - Selenium常用API
Selenium Web 自动化 - Selenium常用API 2016-08-01 目录 1 对浏览器操作 1.1 用webdriver打开一个浏览器 1.2 最大化浏览器&关闭浏览器 ...
- [Python爬虫] 之六:Selenium 常用控件用法
Selenium 常用控件用法 1.文本框 上图中,如何定位搜索文本框,并输入搜索内容进行搜索 首先:利用方法 find_element_by_xpath定位元素:inputElements = se ...
- GCD 常用代码
GCD 常用代码 体验代码 异步执行任务 - (void)gcdDemo1 { // 1. 全局队列 dispatch_queue_t q = dispatch_get_global_queue(0, ...
- 转--Android实用的代码片段 常用代码总结
这篇文章主要介绍了Android实用的代码片段 常用代码总结,需要的朋友可以参考下 1:查看是否有存储卡插入 复制代码 代码如下: String status=Environment.getE ...
- 刀哥多线程之03GCD 常用代码
GCD 常用代码 体验代码 异步执行任务 - (void)gcdDemo1 { // 1. 全局队列 dispatch_queue_t q = dispatch_get_global_queue(0, ...
- jquery常用代码集锦
1. 如何修改jquery默认编码(例如默认GB2312改成 UTF-8 ) 1 2 3 4 5 $.ajaxSetup({ ajaxSettings : { contentT ...
- Mysql:常用代码
C/S: Client Server B/S: Brower Server Php主要实现B/S .net IIS Jave TomCat LAMP:L Mysql:常用代码 Create table ...
- javascript常用代码大全
http://caibaojian.com/288.html 原文链接 jquery选中radio //如果之前有选中的,则把选中radio取消掉 $("#tj_cat .pro_ca ...
- Android 常用代码大集合 [转]
[Android]调用字符串资源的几种方法 字符串资源的定义 文件路径:res/values/strings.xml 字符串资源定义示例: <?xml version="1.0&q ...
随机推荐
- 使用Tensorflow Object Detection进行训练和推理
整体流程(以PASCAL VOC为例) 1.下载PASCAL VOC2012数据集,并将数据集转为tfrecord格式 2.选择并下载预训练模型 3.配置训练文件configuration(所有的训练 ...
- go 的方法集和接口断言
Go 的方法集与接口断言 方法集 引子 首先来看一段代码: package main import "fmt" func main() { var v IpmHelloByValu ...
- 一次ssh不能登陆问题
看提示应该是进程数满了 ps -eLf | wc -l 查看当前进程数 [root@qc-app-16-63 containers]# ps -eLf | wc -l2625 查看允许最大进程数 s ...
- Oralce注入 bypass waf出数据
发存货: 探测banner 版本号: ' and (SELECT banner FROM v$version where rownum=1) like 'O%' and '1'like'1 rownu ...
- vue 回顾
①.组件的注册 全局注册: // 注册 Vue.component('my-component', { template: '<div>A custom component!</di ...
- Thinkphp5之laypage分页插件的实现
//一下是laypage所用到的 js <script type="text/javascript" src="__STATIC__/lib/laypage/1.2 ...
- node-全局对象
Node.js 全局对象 JavaScript 中有一个特殊的对象,称为全局对象(Global Object),它及其所有属性都可以在程序的任何地方访问,即全局变量. 全局对象与全局变量 global ...
- OGG-Oracle同步Sequence
一.需求,使用OGG同步软件,将Oracle 11g Sequence实时同步到19c新库中 参考文档 Implementing replication of cyclic sequences in ...
- XCTF-unfinish
unfinish 之前做过这个题,这是之前写的WP:链接
- TP之安全机制
防止sql注入 1.查询条件尽量使用数组方式,具体如下: 1 $wheres = array(); 2 3 $wheres['account'] = $account; 4 5 $wheres['pa ...