- 博客(26)
- 资源 (1)
- 收藏
- 关注
原创 unicode编码导致正则表达式匹配的问题分析
下面我们来分析一下问题,从byte数据我们可以看到里面包含了如\u002F即unicode编码的数据,以及如\xe6的utf-8编码的数据。问题是这样的,在获取网页数据的时候由于网页的数据采用了混码,中文网页可能既有utf-8又有unicode编码,造成解析出来的数据包含乱码。所以由于源数据采用了混合的编码 (utf-8 和 unicode),采用普通的解码方法即选择一种解码方式是行不通的。上面是我们所看到知乎返回的结果,在结果里可以看到除了中文和普通的字母符号外,还包含了\u002F之类的字符串。
2023-07-06 17:41:28
2079
原创 Ubuntu 22.04 安装 Python tesserocr库报错
用系统装了一下午的环境都没有问题,唯独安装这个库时报错了。直接导致我的方向错误,以为又是库的兼容问题。到头来原来只是pip版本太低导致的,其实从错误信息里已经可以猜到。当然马后炮比较容易,当时还是挺抓狂的。解决方法简单,升级pip版本。环境还是Ubuntu 22.04, 系统自带的python是3.10.6。在安装tesserocr库时报如下错误,这里只截取有用的部分。升级完成后再安装就成功了。
2023-06-29 17:08:11
475
原创 Anaconda Navigator无法打开以及在终端运行出现cannot import name ‘iter_fields‘ from ‘urllib3.filepost‘ 的问题解决办法
Anaconda Navigator启动的时候引用了python下最新版本的urllib3,由于版本不兼容造成的启动失败。公司电脑安装的Anaconda Navigator1.9.12, python 3.8.3. 由于Anaconda Navigator 没有selenium的包,所以通过pip 安装了selenium 4.0.1. 安装过程中报与requests的版本不兼容,所以又通过pip 升级了urllib3, requests到最新版本。此方案可以融会贯通,因为每个人遇到的不兼容的包可能不同。
2023-06-16 11:50:17
2369
5
原创 VMware Win7虚拟机 下安装 Docker
最近在学习爬虫方面的知识,搭建各种框架中很意外地遇到各种问题在教程里是没有提到的。这次安装docker也是如此从安装到配置,看了不少文章都是只解决了一部分并没有串起来讲的。这篇就把我从安装开始到成功运行遇到的所有问题和解决方法写出来。如果你的环境相对比较干净的话,应该能比较顺利的完成Docker的安装。我的学习环境是一套运行在VMware下的win7 x64。如果你也是在虚拟机中的环境在开始安...
2019-01-23 17:42:52
5251
1
原创 Windows python3.7 下安装运行pyspider
安装pyspider的时候习惯直接用pip安装,结果抛错如下Command "python setup.py egg_info" failed with error code 10 in C:\Users\jackc\AppData\Local\Temp\pip-install-hext0tnl\pycurl\看信息貌似是缺少什么文件了,然后查了一下的确如此,在安装pyspider之前需要...
2019-01-21 17:16:16
2360
原创 windows下安装tesserocr报错——避坑指南
学习爬虫的时候需要安装tesserocr来进行图片的识别,在安装过程中有几个坑,一个接着一个,小问题浪费很多时间。跟着这个流程走保证分分钟搞定。根据教程先行下载和安装tesseract,安装过程中记得勾选Additional language data。这是为了识别多语言用的。一路next即可。千万不要以为安装完了就万事大吉了,这里需要更新一下windows的环境变量。不然在python中安装...
2019-01-21 11:21:26
1313
2
原创 Selenium - Page Object 设计模式
前几章陆续介绍了Selenium API提供的各种操作网页元素的方法。作为一个在实际工作中所搭建自动化测试框架中,这仅仅是非常小的一部分。在实践中除了网页元素操作之外还需考虑得更多,诸如测试用例的组织, 测试报告,自动化测试的触发条件等等。所以在接下来的几篇中会陆续介绍如何搭建一个完整的测试框架所设计的一些工具。今天先来介绍一下编写自动化测试用例时所使用的一种设计模式 Page Object. 这...
2018-07-15 17:01:05
2414
原创 Selenium - 元素等待
这是一个在写自动化脚本时经常遇到的问题。试想这样的一个场景,通过脚本打开一个网页,可是由于网络的问题页面并没有及时加载进来。这时候如果已经运行到之后查找元素的代码那么势必会抛出错误找不到相应元素,而事实并非如此。如果没有合适的元素等待处理,这样的测试代码不仅不够健壮,过多的误报会消耗测试人员大量的精力去查找测试失败的原因。元素等待就是在指定的时间内等待元素加载进来之后再执行下面的代码,否则一直等待...
2018-06-05 21:08:37
496
原创 Selenium - 鼠标键盘事件
随着技术的发展,现在的网页提供了越来越丰富的交互方式,例如右击,悬停,拖拽等一些以前只在客户端软件上才有的操作,一些基础的元素操作方法可能满足不了所有的测试需求。对于这方面的操作,Selenium提供了一个ActionChains类来实现以上的功能。这里只对常用的几个方法做介绍,更多信息请查看API文档中class selenium.webdriver.common.action_chains部分...
2018-05-01 17:09:16
610
原创 Selenium - iframe 切换
iframe元素会创建包含另外一个文档的内联框架,即iframe里面的显示的页面与外面的页面并不来自一个html文件。这也就不难理解如果要操作iframe里面的页面元素需要切换。当你发现自己的代码并没有问题,但是总是找不到元素的时候就可以考虑是不是iframe在里面捣鬼。126邮箱 登录页面的iframe曾经就困扰了我很久很久,今天就拿它来做例子。首先贴出126邮箱的页面,和登录部分iframe的...
2018-04-17 16:08:41
3872
原创 Selenium - 基本元素的操作
了解完元素定位,浏览器操作,接着打算分几篇文章介绍一下一些常见UI控件的操作,比如文本框,按钮,链接,下拉菜单等等。虽然看上去控件的种类很多,但其使用的方法就是那么几个。因为控件不同无非就是html的tag不同,其他的属性都是相同的。方法的介绍很容易从API找到,多说无益。以下就根据UI控件的不同,介绍一下如何运用这些函数完成常用的操作。文本框:对于文本框的操作无非就是输入值,清空值,下面是对应的...
2018-04-15 10:24:24
2180
原创 Python subprocess 子进程管理(二)
继续介绍subprocess模块里的Popen类。Popen类很强大,提供了很多参数和方法来管理子进程。其中很多数参数我并没有亲自使用过。所以这部分更多只是当官方文档的搬运工。class subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None...
2018-04-10 16:36:42
3220
原创 Python subprocess 子进程管理(一)
最近在改进自动化框架的启动模块,从而能够把robot的所有输出写入到日志文件中以便查看,也为下一步研究selenium grid打下基础。在这个过程中看了不少有关python中通过subprocess运行外部命令的资料,所以就顺便写下来以便日后温习。一下所有的内容都基于Windows中python2.7的环境,Unix和python3中会稍有不同。在搜索通过python 运行外部命令的文章中总能看...
2018-04-06 12:54:40
4577
原创 Selenium - 浏览器控制
前面几篇介绍了元素定位相关的方法,从这一篇开始会介绍得到元素对象后的各种操作方法。web自动化的难点就是如何准确稳定地获得元素对象,之后的操作就显得容易很多,浏览一下API的文档做一下搬运工就能实现。 俗话说授之以鱼不如授之以渔,给出python的webdriver API的文档地址供大家学习,这里则选取一些常用的方法通过举例帮助大家知道如何运用。今天主要介绍一下浏览器控制的一些常用属性和方法,他...
2018-02-20 14:08:38
1791
1
原创 Selenium - CSS 选择器简介
Selenium定位的两大利器非xpath和css selector莫属了,熟练掌握任何一种都能解决绝大部分的定位问题。上一篇简单介绍了一下xpath,这次就讲讲css selector,但是个人并不太喜欢这种方式,觉得可读性上没有xpath那么清晰。老样子更多的理论知识请移步w3school,这里主要通过举例帮助大家运用。首先何为CSS, CSS指层叠样式表(Cascading Styl
2018-02-05 18:25:11
4821
原创 Selenium - xpath 语法简介
上一篇借用xpath介绍了一下如何用绝对&相对路径定位,个人觉得xpath是selenium支持的定位方式中最有效的手段,它比id,name等属性定位强大灵活,而且又比同样强大的css selector的方式更接近自然语言容易理解。所以掌握了xpath对解决元素定位的困扰会有很大的帮助。今天就简单地介绍一下selenium中常用的一些xpath语法,有兴趣深入学习的可以参考w3school的教程。
2018-01-28 15:57:18
2086
原创 Selenium - 元素定位之相对&绝对路径
上一篇简要介绍了一下selenium元素定位的各种方法,这里简单讲一下元素定位的绝对路径和相对路径的概念。绝对路径,这里以xpath举例:/html/body/div/form[@name=“f”]/span[@class=“bg s_btn_wr”]/input[@id="su"]这就是一个绝对路径,从网页的root节点html开始,按照xpath的路径一层一层向
2018-01-14 16:12:28
22261
1
原创 Selenium - 元素定位
UI自动化中元素的定位是最最基本,但也是最让人头痛的地方。控件的动态加载,属性的动态生成抑或因为开发的懒而造成控件的识别问题总是自动化测试的噩梦。WebDriver作为主流的网页测试工具提供了非常丰富的识别控件的方法。这次在写自动化库的时候也遇到各种定位问题,着实抓狂了一阵,但最终都解决了。 虽然我们的产品网页结构并不复杂,但因为xpath, css selector 本身的强大,虽然有时候要绕个
2017-10-21 21:39:31
904
原创 Selenium - Selenium & Python 环境搭建
整个过程是非常简单傻瓜式的,不过对与初学者可能还是一个不大不小的问题,所以决定写一下。python作为所有的基础,当然是第一个安装。如果你是windows系统,那就很简单啦,下载个python的安装包,点击安装,然后就搞定了。跟安装个QQ没有任何区别。如果你是Linux恭喜你,更简单。因为不需要安装。linux是自带python的。不过这里要插一句关于python版本的问题,现在绝大多数情况下
2017-10-09 15:42:12
575
原创 Selenium - Selenium的前世今生
年初的时候为公司的项目用python写了一套基于selenium的自动化库,让测试人员不需要关注复杂的各种定位问题,只需要选择控件的名字就能实现各种操作。 前前后后selenium各种文档看了有半年,正好最近难得悠闲,借此机会回顾,总结一下。今天先来分享一些关于selenium的背景知识。Selenium最早由Jason Huggins在2004年创建的,最初只是一些能够与web页面交互的Java...
2017-10-04 15:47:15
702
原创 运行pip报错:Fatal error in launcher: Unable to create process using '"'
在新环境上安装python的时候又再次遇到了这个情况,这次留意了一下,发现原来的文章有错误的地方,所以来更新一下,应该能解决大部分的问题。环境是win8,原来只安装了python2.7。后来因为要用到python3,为了让两者共存,降python3的运行文件改成了python3.exe. 问题就此而来,这时候运行python3 的pip会遇到如下错误Fatal error in l
2017-06-20 20:33:49
48331
36
转载 Python 不同方法的区别和调用
无意间看到一张图非常清晰地展示了python中不同方法如何声明及调用。虽然没有从更深层次的解释,不过作为实用主义真的是太适合不过了
2017-05-27 14:50:18
434
原创 ubuntu 安装python3 pip 曲折经历
以前一直在ubuntu14.04的python2.7上写selenium.最近想学习一下web接口测试,并且尝试一下python3,所以准备装个djongo玩一下。结果为了安装python3下的pip折腾了一晚上终于工作正常。ubuntu 14.04自带python2.7 和3.4,遂利用apt-get安装pipsudo apt-get install python3-pip可是出现类似如
2017-05-02 21:49:53
33819
1
转载 SQL Server - 使用 Merge 语句实现表数据之间的对比同步
表数据之间的同步有很多种实现方式,比如删除然后重新 INSERT,或者写一些其它的分支条件判断再加以 INSERT 或者 UPDATE 等。包括在 SSIS Package 中也可以通过 Lookup, Condition Split 等多种 Task 的组合来实现表数据之间的同步。在这里 "同步" 的意思是指每次执行一段代码的时候能够确保 A 表的数据和 B 表的数据始终相同。可
2017-04-28 10:23:15
668
Inspect (Windows8/UISpy)
2014-01-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人