·
日常教程 ·
111639
之前一直都是在用java写的selenium测试框架。
今天突然有感而发不是python 也能玩起来。于是没有真正在python上运行过例子。那就来个demo 记录下。
安装python 安装 pip 安装python的selenium 包这些就跳过了。 今天就记录下小白人员怎么跑起来。
如果要跑python 写好的 selenium脚本:
需要: Chrome.driver(暂且叫他浏览器驱动)
下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads (windows都下载32的zip包不要管你的机器64位通用的不然你安装chrome浏览器不会在Program Files (x86)的位置默认安装 题外话)
最新是2.30 我是win10 最新的预览版本没问题。
其他浏览器 这里暂不做讲解。原理基本一样。
下载下来解压后是个文件夹可以不做任何修改:但是一定要配置这个文件夹的path 环境变量。因为python是通过OS级别去调用你的驱动的。我这里是
我这里是在E盘配置方式:配置到文件夹层级就可以了
然后就是运行的问题了:
一般都会有个工作区间。我这里就直接放在桌面了:
一般运行是要CMD 里面 cd到你的目录下面:例如
运行python 文件的方式 直接把文件拖动到 cmd 当前路径下就能运行:
直接文件拖动到cmd 回车就运行了。
代码:前提是把环境搭建好:搭建环境可以看这里虫师的环境搭建 http://www.cnblogs.com/fnng/archive/2013/05/29/3106515.html
#coding=utf-8
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www.baidu.com")
time.sleep(5)
#id 定位写你的元素获取之类的
driver.quit()
代码我只做了打开和关闭浏览器的操作 其他的根据需要自己扩展定位自己界面的元素。 运行基本就这样 自己做个记录。
asyncio.shield必须用于关键清理操作(如日志落盘、事务提交、连接关闭),防止被取消中断导致数据不一致;应只包裹协程本身(shield(coro)),而非Task,且内部子await需单独shield。 asyncio.shield什么时候必须用? 当一个asyncio.Task正在执行关...
__new__中判空非原子操作会导致多线程重复创建实例;DCL通过无锁初判+加锁后复判解决,需配合__init__幂等防护。 __new__中的if判断不是原子操作 线程A执行到ifcls._instanceisNone时为True,刚准备调用super().__new__(cls),此时被调度挂起...
ClientPayloadError表明服务端提前关闭连接,非客户端代码错误;常见于服务端超时、拒绝大响应或代理截断,需通过抓包、检查响应头、服务端日志及添加读取超时和异常处理来定位解决。 ClientPayloadError通常意味着服务端提前关闭了连接 这个错误不是客户端代码写错了,而是aioh...
Monorepo是应对跨子包频繁修改、版本对齐成本高、CI耗时爆炸等痛点的止损方案;需统一依赖管理、确保本地与CI环境一致,并严守子包独立测试边界。 Monorepo不是“更先进”,而是对特定规模和协作模式的项目更可控——当Python项目中出现跨子包频繁修改、版本对齐成本高、CI耗时爆炸或本地开发...
pandas.read_html能自动解析HTML表格并修复合并单元格、多级表头等结构,但需合理配置match、header、skiprows等参数,并处理JS渲染、数据类型、空值等问题,否则易导致列错位、类型错误等隐患。 因为pandas.read_html能直接把HTML表格转成DataFram...
poetryinstall与pipinstall-rrequirements.txt的本质差异在于:前者是“解析后装”,基于poetry.lock中已验证的完整依赖图确保版本兼容并自动激活专属虚拟环境;后者是“盲装”,仅按文本顺序安装、不解析依赖冲突、不隔离环境,易导致静默覆盖和全局污染。 因为pi...
不能直接用ThreadPoolExecutor更新Tkinter控件,因为Tkinter的Tcl解释器只允许主线程操作UI;子线程(包括线程池中的工作线程)调用widget方法会引发TclError或卡死;必须通过queue.Queue+root.after()将结果安全传回主线程更新。 为什么不能...
用np.convolve做移动平均需归一化kernel并截取中间部分;推荐镜像填充防边界畸变,小核用cumsum加速;savgol_filter参数需满足polyorder<window_length且window_length为奇数。 用np.convolve做简单移动平均平滑,但要注意边界...