selenium部分知识点总结
selenium部分总结
最近写了一个selenium自动化脚本. 基于此总结一些常用的代码
1. 用户输入换行符不终止输入
strings = ''
s = input('请输入:(q停止输入)')
while s != 'q': # 此处可自行设置
strings = strings + s + '\n'
s = input()
"""
输入:
B07RW2M73Y
B0943TBH7K
B08NVVWXYL
B0B3STVYGY
B07FT1HSZB
B0BPWYR45Z
B0BDYT8HQ7
q
"""
2.操作stealth.min.js文件隐藏浏览器指纹特征. 避免google反爬
- 下载stealth.min.js文件
https://gitcode.net/mirrors/requireCool/stealth.min.js/-/blob/main/stealth.min.js
- 添加到程序中
web = Chrome()
# 读取文件
with open('stealth.min.js', 'r') as f:
js = f.read()
# 调用函数在页面加载前执行脚本
web.execute_cdp_cmd('Page.addScriptToEvaluateOnNewDocument', {'source': js})
web.get(url)
3.显示等待
使用场景: 当不确定页面标签什么时候加载出来. 设置太长的睡眠时间又太浪费. 这时候就可以设置显示等待. 等待标签出现. 立刻进行下一步操作
# 显示等待, timeout=120, 每0.5秒检查一次标签是否存在
WebDriverWait(web, 120, 0.5).until(
# 条件:直到元素加载完成
EC.presence_of_element_located((By.XPATH, '/html/body/div[1]/div[1]/div[2]/header/div[1]/nav/ul/ul/li[2]/a'))
).click()
4.封装了一个判断页面标签是否存在的函数
def isElementPresent(web, path):
"""
用来判断元素标签是否存在,
"""
try:
web.find_element(By.XPATH, path)
# 原文是except NoSuchElementException, e:
except NoSuchElementException as e:
# 发生了NoSuchElementException异常,说明页面中未找到该元素,返回False
return False
else:
return True
5. selenium执行js代码
# js点击export
js= """
document.evaluate('/html/body/div[1]/div[2]/div[1]/div[2]/div/div[2]/div/div[2]/div[1]/div[2]/div[2]/div/button', document).iterateNext().click()
"""
web.execute_script(js)
time.sleep(3)
# 清空输入框内容
clear_js = """
const parentElement = document.querySelector('#re-container > div.sc-iYosqi.bzA-dlM > div.sc-JOToA.jJhRrE > div.sc-eSnCNH.enpqfV > div > form > div.sc-dAsQPr.bYouva > div > div'); // 选择父级元素
const spanElements = parentElement.querySelectorAll('#re-container > div.sc-iYosqi.bzA-dlM > div.sc-JOToA.jJhRrE > div.sc-eSnCNH.enpqfV > div > form > div.sc-dAsQPr.bYouva > div > div > span'); // 选择所有的 <span> 子元素
spanElements.forEach(spanElement => {
parentElement.removeChild(spanElement); // 删除每一个 <span> 子元素
});
"""
web.execute_script(clear_js)
6. 配置无头浏览器
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')
chrome_options.add_argument('--headless')
web = Chrome(chrome_options=chrome_options)
7. 图鉴打码(0.002元一次)
# 一、图片文字类型(默认 3 数英混合):
# 1 : 纯数字
# 1001:纯数字2
# 2 : 纯英文
# 1002:纯英文2
# 3 : 数英混合
# 1003:数英混合2
# 4 : 闪动GIF
# 7 : 无感学习(独家)
# 11 : 计算题
# 1005: 快速计算题
# 16 : 汉字
# 32 : 通用文字识别(证件、单据)
# 66: 问答题
# 49 :recaptcha图片识别
# 二、图片旋转角度类型:
# 29 : 旋转类型
#
# 三、图片坐标点选类型:
# 19 : 1个坐标
# 20 : 3个坐标
# 21 : 3 ~ 5个坐标
# 22 : 5 ~ 8个坐标
# 27 : 1 ~ 4个坐标
# 48 : 轨迹类型
#
# 四、缺口识别
# 18 : 缺口识别(需要2张图 一张目标图一张缺口图)
# 33 : 单缺口识别(返回X轴坐标 只需要1张图)
# 五、拼图识别
# 53:拼图识别
def base64_api(uname, pwd, img, typeid):
with open(img, 'rb') as f:
base64_data = base64.b64encode(f.read()) # read()字节 => b64字符串
b64 = base64_data.decode() # b64字符串是图片
data = {"username": uname, "password": pwd, "typeid": typeid, "image": b64}
result = json.loads(requests.post("http://api.ttshitu.com/predict", json=data).text)
if result['success']:
return result["data"]["result"]
else:
return result["message"]
result = base64_api(uname='ifeng', pwd='xxxxxx', img="check.png", typeid=1)
print(result) # 验证码
8. selenium部署到服务器上定时运行
- 先写一个执行的脚本book.sh
source /envs/day06/bin/activate # 打开linux的python虚拟环境
python /root/order-trading-platform/script/test.py
deactivate # 关闭虚拟环境
- 为该脚本添加权限
chmod +x book.sh
- 在crontab指定该脚本
先进入crontab编辑
crontab -e添加定时任务: 每天六点执行book.sh
0 6 * * * /root/order-trading-platform/script/book.sh
selenium部分知识点总结的更多相关文章
- 关于python中selenium一些知识点
selenium几种元素操纵方法 切换iframe层 #切换至xx iframe层 driver.switch_to.frame("name and id") # 切回主HTML层 ...
- 虚言妙诀终虚见,面试躬行是致知,Python技术面试策略与技巧实战记录
原文转载自「刘悦的技术博客」https://v3u.cn/a_id_183 2021年,对于正在找工作的朋友来说,笼罩在新冠肺炎疫情之下,今年的就业季显得更加具有挑战性,更有意思的是,每当这个时候,各 ...
- selenium + python自动化测试unittest框架学习(四)python导入模块及包知识点
在写脚本的时候,发现导入某些模块,经常报错提示导入模块失败,这里来恶补下python导入模块的知识点. 1.模块导入时文件查找顺序 在脚本中,import xxx模块时的具体步骤: (1)新建一个mo ...
- python爬虫知识点总结(八)Selenium库详解
官方学习文档:http://selenium-python.readthedocs.io/api.html 一.什么是Selenium? 答:自动化测试工具,支持多种浏览器.用来驱动浏览器,发出指令让 ...
- selenium知识点
1. 导包 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from se ...
- 浅谈学习selenium的一些知识点的总结
学习自动化测试,先得学习一门语言.自动化对语言要求掌握的程度不深,但必须得会基本的入门语法. 我学习的是python2,简单,易懂,上手快. 每天敲就是了. 我的学习路径是: 先学习一段时间pytho ...
- python selenium 实战涉及很多知识点
1.iframe的切入和切出 #切入 driver.switch_to.frame(driver.find_element_by_id('iFrame_1')) # 切换出来 driver.switc ...
- Selenium+java自动化测试常用知识点
一.元素的定位 1.通过ID定位元素: findElement(By.id(element)); 2.通过元素的名称定位元素: findElement(By.name(element)); 3.通过元 ...
- Python爬虫学习(9):Selenium的使用
1 简介以及安装 Selenium 是什么?一句话,自动化测试工具.它支持各种浏览器,包括 Chrome,Safari,Firefox 等主流界面式浏览器,如果你在这些浏览器里面安装一个 Seleni ...
- Selenium WebDriver 之 PageObjects 模式 by Example
目录 1. 项目配置 2. 一个WebDriver简单例子 3. 使用Page Objects模式 4. 总结 5. Troubleshooting 6. 参考文档 本篇文章通过例子来阐述一下Sele ...
随机推荐
- mybatis框架的连表查询one2one
mybatis 的连表查询one2one 1.可以通过主从表之间的关联查询通过主键两次 在resultMap映射中的association标签<association property=&quo ...
- Android adb命令 安装
adb的全称为Android Debug Bridge.是android司机经常用到的工具. 查看本地adb版本 打开cmd 命令:adb version 显示adb版本.如果显示不是内部或者外部命令 ...
- python跨文件之全局变量
Python中的global关键字,你了解吗? - 知乎 (zhihu.com) global 关键字 python跟C不一样,c是在一个文件定义后在另一个文件声明下是extern变量就好.pyth ...
- Python MySQLdb连接被多线程共享引发的内核segfault段错误
Python celery Worker exited prematurely: signal 11 (SIGSEGV) --一种解决方案 Python libmysqlclient segfault ...
- 基于C语言的小学生四则运算出题器
一.实验目的以及项目来源: 目的: 1.帮助老师产出随机的海量四则运算符的运算题目. 2.每次题目的产出均为随机,增强同学的四则运算能力. 项目来源: 项目来源于软件开发与创新课程的结对编程,对100 ...
- Hive使用Tez作为计算引擎,hive启动报错
1.问题描述: (1)问题示例: 1)hive使用配置文件hive-site.xml配置tez为计算引擎,hive登录报错: [Hadoop@master Tmp]$ hiveHive Session ...
- 转帖:弹性布局(display:flex;)属性详解
它之所以被称为 Flexbox ,是因为它能够扩展和收缩 flex 容器内的元素,以最大限度地填充可用空间.与以前布局方式(如 table 布局和浮动元素内嵌块元素)相比,Flexbox 是一个更强大 ...
- PHP 合并两个二维数组
思路:遍历二维数组,合并两个二维数组的值,赋值给新数组 function mergeArray($arr1,$arr2){ $newArr = []; foreach($arr1 as $v1){ f ...
- 微软出品自动化神器【Playwright+Java】系列(十二)测试框架的设计与开发
一.前言 大家好,我是六哥! 又有好长一段时间没更文了,不是我懒,而是确实在更文上,没有以前积极了,这里是该自我检讨的. 其实不是我不积极,而是相对更文学习来说,优先级不是最高. 对我而言,目前最重要 ...
- NotionAI - 文档领域的ChatGPT,一款 AI 加持的在线文档编辑和管理工具
简介 NotionAI - 文档领域的ChatGPT,一款 AI 加持的在线文档编辑和管理工具 作为国际领先的在线文档编辑和管理工具,Notion受到了广大用户的欢迎,尤其是程序员们.它不仅支持笔记. ...