Selenium+Python基础
* 前端工具介绍:
1. Firebug 现已加入 Firefox 开发者工具中 。http://mozilla.com.cn/thread-378679-1-1.html
2. 老版本的Firefox下载地址:http://ftp.mozilla.org/pub/firefox/releases/
* 使用IDLE编写Python:
1. 快捷键:
Tab键:自动匹配相应的关键字。
Alt+P:回退到上次编辑的Python代码。
Alt_N:和Alt+P相反。
F5:运行代码
2. 运行Python报错:
错误消息:selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
原因:浏览器驱动没有装。
解决办法:下载相关浏览器驱动,然后安装。
Firefox下载地址:http://blog.csdn.net/huilan_same/article/details/52885039
Chrome下载地址:http://chromedriver.storage.googleapis.com/index.html
* Python基础:
1. print 打印
1 print("hello %s,Nice to meet you!")#打印字符串 2 print("You are %d !");#打印数字 3 print("You print is %r");#打印未知类型
2. input 输入
1 n = input("Enter any content:"); 2 print("Your input is %r",%n);
3.引号和注释
1. Python中不区分单引号和双引号,可以嵌套使用,但不能交叉使用。
2. 单注释用:(#)表示,多行注释用三队引号表示,同样不区分单、双引号。
1 #单行注释 2 3 """ 4 多行注释 5 """ 6 ''' 7 多行注释 8 '''
4. 分支和循环:
1. if语句
1 a=2 2 b=3 3 if a>b: 4 print("a max!") 5 else: 6 print("b max!")
注意:Python没有像其他大多数语言一样使用“{}”表示语句体,所以它通过语句的缩进来判断语句体,缩进默认为4个空格。
if 语句是通过“==”运算判断相等;通过“!=”判断不相等;通过“in 和not in”表示包含关系;通过布尔“True 和 False”判断 如下所示:
1 #相等运算 2 student="xiaoming" 3 if student == "xiaoming": 4 print("xiaoming,You are on duty today") 5 else: 6 print("please call xiaoming to duty") 7 #包含运算 8 hi="hello world" 9 if "hello" in hi: 10 print("Contain") 11 else: 12 print("Not Contain") 13 #布尔判断 14 a=True 15 if a: 16 print("a is True") 17 else: 18 print(a is not True)
2. for语句
1 #遍历一个字符串 2 for i in "hello world" 3 print(i)#输出结果会按照每个字符进行打印 4 #遍历一个字典 5 fruits=['banana','apple','mango'] 6 for fruit in fruits 7 print(fruit)#分别打印出:'banana','apple','mango'
range()函数在for中的应用。range(start,end,[,step])
1 #在Python2中range()是一个生成器,xrange()是一个数组 2 #xrange()在性能上要由于range(),因为不需要一上来就开辟一块很大的内存空间。 3 #而在Python3中,range()和Python2中的xrange是一样的,是一个数组 4 for i in range(1,10,2): 5 print(i)#打印出:1 3 5 7 9 6 #range()函数默认是从0开始循环
5. 数组和字典
数组用方括号([])表示,里面的每一项用逗号(,)隔开。数组里面可以任意放置数字和字符串,默认下标是从0开始的。通过append()函数可以往数组末尾追加新的项。
1 lists=[1,"2",3,4] 2 lists.append('s') 3 4 #lists为[1,"2",3,4,'s']
字典用({})表示,里面的项成对出现,一个key对应一个value;key与value之间用冒号(:)隔开;不同项之间用逗号(,)隔开。keys()函数放回字典key的列表;values()函数返回字典value的列表。
注意:Python中规定一个字典中的key必须是独一无二的。value可以相同。项在返回时并不会按照它们在字典中的存放顺序返回。如果想按照存放的顺序输出,在可以通过下面的方法:
1 #通过zip方法合并两个List为Dictionary 2 #遍历会按原先的顺序 3 keys=["a","b","c","d"] 4 values=[1,2,3,4] 5 6 for keys,values in zip(keys,values) 7 print(key,value)
6. 函数、类和方法
定义函数:使用关键字def
1 def add(a,b): 2 print(a+b)
定义类:使用关键字class
1 class A(Object): 2 3 def _init_(self,a,b): 4 self.a=int(a) 5 self.b=int(b) 6 7 8 def add(self): 9 return self.a+self.b 10 #方法定义的第一个参数self是必须的,但是在调用方法的时候不需要为这个参数传值。 11 12 #使用 13 count=A('4',5) 14 print(count.add())
类中的继承
1 class A(): 2 3 def add(self,a,b): 4 return a+b 5 6 class B(A): 7 8 def sub(self,a,b): 9 return a-b 10 11 12 print(B().add(4,5)) #9
7. 模组(类库或者模块)
引用模块(通过下面两种方式引用模块)
1 import time 2 from time import * 3 4 #可以通过help(time) 命令查看time类中的方法
模块调用
1 #相同目录下,模块之间的调用 2 #pub.py 3 def add(a,b): 4 return a+b 5 6 #count.py 7 from pub import add 8 9 print(add(4,5)) 10 11 #不同目录下,模块之间的调用 12 import sys 13 sys.path.append(",/model") 14 from model import new_count 15 16 test =new_count.B() 17 test.add(2,5)
8.异常及抛出异常
1 #Exception是所有异常的基类,但继承BaseException,可以通过它来捕获未知的异常结果 2 try: 3 #正常逻辑 4 except BaseException as msg: 5 print(msg) 6 #异常处理逻辑 7 else: 8 #没出现异常的逻辑 9 finally: 10 #不管是否有异常,都会被执行!
抛出异常raise
1 #例如抛出一个"使用为负值对象"异常,如下写法: 2 raise NameError("msg")
注意:raise只能使用Python中提供的异常类。
Python提供的异常类如下:
BaseException | 所有异常的基类 |
SystemExit | 解释器请求退出 |
KeyboardInterrupt | 用户中断执行(通常是输入^C) |
Exception | 常规错误的基类 |
StopIteration | 迭代器没有更多的值 |
GeneratorExit | 生成器(generator)发生异常来通知退出 |
StandardError | 所有的内建标准异常的基类 |
ArithmeticError | 所有数值计算错误的基类 |
FloatingPointError | 浮点计算错误 |
OverflowError | 数值运算超出最大限制 |
ZeroDivisionError | 除(或取模)零 (所有数据类型) |
AssertionError | 断言语句失败 |
AttributeError | 对象没有这个属性 |
EOFError | 没有内建输入,到达EOF 标记 |
EnvironmentError | 操作系统错误的基类 |
IOError | 输入/输出操作失败 |
OSError | 操作系统错误 |
WindowsError | 系统调用失败 |
ImportError | 导入模块/对象失败 |
LookupError | 无效数据查询的基类 |
IndexError | 序列中没有此索引(index) |
KeyError | 映射中没有这个键 |
MemoryError | 内存溢出错误(对于Python 解释器不是致命的) |
NameError | 未声明/初始化对象 (没有属性) |
UnboundLocalError | 访问未初始化的本地变量 |
ReferenceError | 弱引用(Weak reference)试图访问已经垃圾回收了的对象 |
RuntimeError | 一般的运行时错误 |
NotImplementedError | 尚未实现的方法 |
SyntaxError | Python 语法错误 |
IndentationError | 缩进错误 |
TabError | Tab 和空格混用 |
SystemError | 一般的解释器系统错误 |
TypeError | 对类型无效的操作 |
ValueError | 传入无效的参数 |
UnicodeError | Unicode 相关的错误 |
UnicodeDecodeError | Unicode 解码时的错误 |
UnicodeEncodeError | Unicode 编码时错误 |
UnicodeTranslateError | Unicode 转换时错误 |
Warning | 警告的基类 |
DeprecationWarning | 关于被弃用的特征的警告 |
FutureWarning | 关于构造将来语义会有改变的警告 |
OverflowWarning | 旧的关于自动提升为长整型(long)的警告 |
PendingDeprecationWarning | 关于特性将会被废弃的警告 |
RuntimeWarning | 可疑的运行时行为(runtime behavior)的警告 |
SyntaxWarning | 可疑的语法的警告 |
UserWarning | 用户代码生成的警告 |