• 我的Appium学习记录——从搭建环境到一个简单Android App测试实例

    本文简单记录了我的Appium入门学习历程。系统环境为Win7 x64,Appium client选择Python,Python版本为2.7。那就开始吧。

    环境的搭建

    1. JDK

    到Oracle官网下载,我安装的是8u121 x64版本。

    安装完,添加环境变量:JAVA_HOME,值:JDK安装的路径,如C:\Program Files\Java\jdk1.8.0_121

    修改环境变量Path,发现好像不用改了,因为安装JDK的时候已经加上了C:\ProgramData\Oracle\Java\javapath,所以没有按网上的教程做(在原来的末尾加上分号”;”,再加上%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin

    再添加环境变量:CLASSPATH,变量值:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

    2. Appium + node.js

    由于用的是Windows系统,Appium给Windows用户做了一个“一键安装包”——AppiumForWindows,到官网http://appium.io/下载即可。里面带了Appium和node.js。安装之后在环境变量Path中再加上Appium(也是node)所在的路径。
    阅读更多…

  • Python 文字转码问题的解决:ignore, replace

    用Python处理中文,肯定是每个人都曾经烦过的问题。

    生产环境是Python2,任务是把unicode字符串如 u’\uxxxx\uxxxx\uxxxx’ 转换为gbk保存,用的是str.encode(‘gbk’)方法。

    然而,经常会出现类似这样的异常:

    UnicodeEncodeError: ‘gbk’ codec can’t encode character u’\uxxxx’ in position 0: illegal multibyte sequence

    原因是遇到了某些非法字符,而蛋疼的是,一大串字符串里面只要遇到一个非法字符,就会报错,这可不是我们希望的。

    解决办法:从帮助文档可知,函数原型是 encode([encoding], [errors=‘strict‘]),decode函数也是一样,默认用的是严格的策略,一遇到问题就抛出异常,我们可以把它改为’ignore’或者’replace’等值,就可以避免异常了。

  • 华南理工大学新校园网认证协议的一点分析

    新的客户端似乎与drcom有较大的联系,我根据身在现场的同学抓的包,给出一点点分析,并基于scapy写出了一个简单的认证客户端(希望能用)。

    1. Start

    Start包很简单,向固定的MAC地址(01:80:c2:00:00:03)发送请求。1

    阅读更多…

  • scapy 学习小记

    前几天用scapy写了个用于802.1x认证的小程序。写完了回顾一下,虽然花了自己两天,但是其实是相当简单的。

    今天找了一下,发现 http://blog.csdn.net/wang_walfred/article/details/40044141 一文,对入门非常有帮助。如果当时看了,至少能少耗一天呀。

    在这里补充一下我的一点心得。

     

    我的开发是从抓包开始的。抓包之后,就可以通过

    pkts = rdpcap('xxxx.pcap')

    读取,读取之后就可以用类似列表的办法如 pkgs[1] 来操作特定的数据包。

    下面是一些命令:

    hexdump(pkt) 	#have an hexadecimal dump
    pkt.command() 	#return a Scapy command that can generate the packet
    pkt.show() 	#for a developped view of the packet

    其中 pkt.command() 可以返回一个string,运行就可以生成相应的packet,之后的修改就很方便了。

     

    最后的心得是sniff:

    sniff(filter='your filter', prn = lambda x: x.show())   # -> list of packets

    可以调用prn指定的函数对过滤到的包进行处理。

  • 在Windows环境下让 Python CGI 输出二进制文件

    服务器是Windows的,现在的需求是通过一个CGI脚本输出一个pdf(或者是一个图片)。发现出来的文件的大小变大了,然后内容显示不出来或者乱码,估计是\r\n导致的问题。折腾了一下午,找到了答案。现在的代码如下:

    filename = r'D:\example.pdf'  #我这里要输出pdf
    print 'Content-type: application/pdf\n\n'
    
    import msvcrt
    msvcrt.setmode(1, os.O_BINARY)   #使stdout为二进制
    
    pdf_file = open(filename, 'rb')
    data = pdf_file.read()
    pdf_file.close()
    print data

     

  • 【葛炮】 程序猿 猿泡沫

    在A站看到了这个作品,有人跟我说“选好语言非常重要”,看来确实如此…