异常处理
异常处理:处理异常(报错:Error)
try:#尝试
print(1/1)#有错误就跳过,没错误就执行
except ZeroDivisionError:#错误被跳过了(捕捉了)
pass#啥也不做
dic = {'a': 1}
key=input('输入一个key获取字典中的值')
try:#尝试
dic=['a':1]
dic[key]#KeyError
1/0
lt=[1,2,3]
lt['a']
except ZeroDivisionError:#错误被跳过了,智能捕捉ZeroDivisionError,其他错误无法捕捉
print('捕捉到了ZeroDivisionError这个错误')
except KeyError:
print('捕捉到了KeyError这个错误')
try:#尝试
dic=['a':1]
dic[key]#KeyError
except Exception as e:#Exception万能异常,把错误信息输入出来,同时一般把该错误记录到日志中
print(e)
#logging.info(e)->程序员看
print('你输入有问题')->用户看
#预运行(类似于把代码抽离到另外一个文件中运行,这样的运行对文件不会造成任何影响),能不用则不用
力扣
1.更换解释器,更换背景色
2.分析题目
'''
给定一个整数数组(列表) nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
示例1:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
'''
# 需求1:你在该数组中找出和为目标值的那 两个 整数
# 需求2:并返回他们的数组下标(索引)
# 一脸懵逼:你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。
for i in range(len(nums)):
for j in range(i+1,len(nums)):
if nums[i]+nums[j]==target:
print(i,j)
for i in range(len(nums)):
sub=target-nums[i]
if sub in nums:
res=nums.index(sub)
id res!=i
print(i,res)
break
字符串内置方法
s = 'nick handsome'
索引取值
print(s[0])
切片
print(s[0:4])
成员运算
print('nick' in s)
print('nike1' in s)
for循环
for i in s:#n i c k h a n d s o m e
print(i)
len()
print(len(s))
接下来讲的都是字符串.出来的方法
s='*** ni ck '
print(s)
strip() 默认去掉两端空格
print(s.strip()) #去空格
print(s.strip('')) #去
print(s.strip('n* ')) #去空格 * n
lstrip()/rstrip() 去左端/右端
s='**nick**'
print(s.lstrip('*'))
print(s.rstrip('*'))
startswith()/endswith() 以 开头/以 结尾
s='nick'
print(s.startswith('nick'))
print(s.endswith(k))
find()/index() 获取某一个元素的索引位置
s='nick'
print(s.find('a'))#找不到返回-1
print(s.index('a'))#找不到报错
join() 把列表内的元素拼接出来
print('*'.join(['a','b','c']))
split() 切割
s='a*b*x*c'
print(s.split('*'))#以*为切割符号,切割字符串
center/ljust/rjust 打印更美观,居中/居左/居右
print(s.center(50,'_'))
print(s.ljust(50,'_'))
print(s.rjust(50,'_'))
isdigit()/isalpha()
s='a'
print(s.isdigit())#是否为纯数字
print(s.isalpha())#是否为纯字母
count() 计数
s='nick nick'
print(s.count('nick'))
ctrl+alt+l-->让他符合pep8标准
from selenium import webdriver # 用来驱动浏览器的
from selenium.webdriver import ActionChains # 破解滑动验证码的时候用的 可以拖动图片
from selenium.webdriver.common.by import By # 按照什么方式查找,
By.ID,By.CSS_SELECTORfrom selenium.webdriver.common.keys import Keys # 键盘按键操作
from selenium.webdriver.support import expected_conditions as EC # 和下面WebDriverWait一起用的
from selenium.webdriver.support.wait import WebDriverWait # 等待页面加载某些元素
import time
# 1.通过selenium的webdriver加载驱动
# webdriver.Chrome('驱动绝对路径')driver = webdriver.Chrome(r'C:\Users\oldboy\Desktop\chromedriver.exe')
# 获取异常
try:
# 等待浏览器数据加载10秒
driver.implicitly_wait(10)
driver.get( 'https://www.baidu.com/' )
input_tag = driver.find_element_by_id('kw')
input_tag.send_keys('小泽老师')
# 查找百度一下按钮
submit_tag = driver.f
ind_element_by_id('su')
submit_tag.click()
# 等待10秒
time.sleep(10)
# 无论try发生了什么,最后都会关闭driver驱动
finally:
driver.close()
今日内容:
测试:
黑盒测试:
对用户所能看到的界面进行测试。
白盒测试:
对软件的性能进行测试。
手动测试:
人为去检测bug。
自动化测试:
通过代码写好的自动化测试脚本检测bug。
selenium请求库:
1.什么是selenium?
- 是一个自动化测试工具。
2.为什么要使用selenium?
- 优点:
- 通过它可以驱动浏览器,跳过登录滑动验证
- 缺点:
爬虫效率低
3.怎么使用selenium?
- 安装驱动
- http://npm.taobao.org/mirrors/chromedriver/2.38/
- 安装selenium请求库
- pip3 install selenium
- html标签查找
- 通过属性查找
- 优先使用:
id: 值是唯一
class: 值可以有多个
name: 值的input里面拥有的唯一属性
- element:查找第一个
- elements:查找所有
- css_selector属性选择器查找
id: #p-price class: .p-price
<div id="p-price">
<div class="p-price">
<strong class="J_45269140635" data-done="1">
<em>¥</em>
<i>238.00</i>
</strong>
</div>