zoukankan      html  css  js  c++  java
  • 异常处理及内置方法和selenium

    异常处理:就是处理异常

    try:  #尝试
        print(1/0)  #有错误就跳过,没有错误就执行
    except ZeroDivisionError: #错误被跳过了(捕捉了)
        pass   #啥也不做
    
    
    key = input('输入一个key获取字典中的值')
        dic = {'a':1}
        dic[key]  #KeyError
        
        1/0
        
        It = [1,2,3]
        It['a']
    except ZeroDivisionError:  错误被跳过了(捕捉了),只能捕捉ZeroDivisionError,其他的错误无法捕捉
        print('捕捉到了zeroDivisionError这个错误') #啥也不做
    except KeyError: #捕捉
        print('捕捉到了KeyError这个错误')
        
     #print(1/0)  #有错误就跳过,没有错误就执行
     
     
     try:
         key = input('输入一个key获取字典中的值')
         dic = {'a':1}
         dic[key] #KeyError
         
         #1/0
         
         it = [1,2,3]
         it = ['a']
         
         except Exception as e:   #Exception万能异常,#把错误信息输入出来,同时把错误记录到日志中
         
         #logging.info(e)    #日志——》程序员看的
         print('你输入有问题')  #用户界面提示的
         
    #力扣刷题
    #预运行(类似把代码抽离到另外一个文件中运行,这样的运行对于本文件不会造成任何影响),能不用则不用
    

    字符串内置方法

    字符串的内置方法:只有字符串才能使用,列表不能使用

    内置方法:自带的方法(提前安排好的,会用就行了)
    
    s = '高枫 nice success'
    #          
    
    #1.索引取值
    print(s[0]) 
    高
    
    #2.切片
    print(s[0:6])
    高枫 nic
    
    #3.成员运算
    print('高枫' in s)
    print('高枫1' in s)
    true
    false
    
    #4.for循环
    for i in s:  #高枫
    print(i)
    
    高
    枫
    
    n
    i
    c
    e
    
    s
    u
    c
    c
    s
    e
    #5.len()
    print(len(s))
    15
    
    #6.strip():默认去掉两端空格
    s=('**ssfdsf**  d')
    #print(s.strip()) #去空格
    #print(s.strip('*'))#去*
    print(s.strip('s'))#去 和*和s
    
    #7.lstrip()/s=rstrip():左端/右端
    s=('**ssfdsf**  d')
    s='**ssfdsf'
    print(s.lstrip('*'))
    print(s.rstrip('*'))
    
    #8.startswith()/endswith():以。。。开头。/以。。。结尾
    s='gao feng'
    print(s.startswith('gao'))
    print(s.endswitj('g'))
    
    9.find()/index():获取某一个元素的索引位置
    s='gao'
    print(s.find('p'))#找不到返回-1
    #print(s.index('o'))#找不到报错
    
    10.jion():把列表内的元素拼接出来
    print('*'.join(['a','b','c']))
    
    11.split():切割
    s='a*b*c'
    print(s.split('*'))#以*为切割符,切割字符串
    ['a','b','c']
    
    #12.center/ljust/rjust #打印更美观,居中/居左/居右
    s='nice'
    print(s.center(50,'-'))  #-----nice----
    print(s.ljust(50,'-')  #nice------
    print(s.rjust(50,'-'))  #------nice
    
    # 13.isdigit()/isalpha()
    s = 'a'
    print(s.isdigit())#是否为纯数字
    print(s.isalpha())#是否为纯字母
    false
    true
    
    #14.count():计数
    s = 'dffdsf'
    print(s.count('f'))
    3
    
    #ctrl+alt+l-->让他符合pep8标准(pytho创始人规定了代码的风格)
    

    两数之和

    1. 更换解释器 , 更换背景色

    2. 分析题目 (需求)

      给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。

      你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。

      class Solution(object):
          def twoSum(self, nums, target):
              """
              :type nums: List[int]
              :type target: int
              :rtype: List[int]
              """
              hashmap = {}
              for index, num in enumerate(nums):
                  another_num = target - num
                  if another_num in hashmap:
                      return [hashmap[another_num], index]
                  hashmap[num] = index
              return None
      
    3. 20-40分钟,如果真想不出来 --》 不要死磕 --》 去评论区看他人装逼(解决思路) ---你目前想不出来是因为你第一次接触,10-15题之后不能再看答案。可以死磕

    4. 用纸笔画

    测试

    • 黑盒测试

      对用户所能看到的界面进行测试

    • 白盒测试

      对软件的性能进行测试

    • 手动测试

      人为去检测bug

    • 自动化测试

      通过代码写好的自动化测试脚本检测bug

    selenium请求库

    • 什么是selenium?

      是一个自动化测试工具

    • 为什么要用selenium

      优点:

      ​ 通过它可以驱动浏览器,跳过登录滑动验证

      缺点:

      ​ 爬虫效率低

    • 怎么使用selenium

      安装selenium请求库

      pip3 install selenium
      下载chromdriver.exe放到python安装路径的scripts目录中即可

    下载chromdriver.exe放到python安装路径的scripts目录中即可
     #验证安装
     下载链接:http://npm.taobao.org/mirrors/chromedriver/2.38/
     cmd-->python
     Python 3.6.1 (v3.6.1:69c0db5, Mar 21 2017, 18:41:36) [MSC v.1900 64 bit (AMD64)] on win32
     Type "help", "copyright", "credits" or "license" for more information.
     >>> from selenium import webdriver
     >>> driver=webdriver.Chrome() #弹出浏览器
     >>> driver.get('https://www.baidu.com')
     >>> driver.page_source
    

    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>
    
    
    
    
    # selenium基本使用
    
    

    from selenium import webdriver # 用来驱动浏览器的
    from selenium.webdriver import ActionChains # 破解滑动验证码的时候用的 可以拖动图片
    from selenium.webdriver.common.by import By # 按照什么方式查找,By.ID,By.CSS_SELECTOR
    from 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'E:PythonScriptschromedriver.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('生命3')
    
    # 查找百度一下按钮
    submit_tag = driver.find_element_by_id('su')
    submit_tag.click()
    
    # 等待10秒
    time.sleep(10)
    

    无论try发生了什么,最后都会关闭driver驱动

    finally:
    driver.close()

  • 相关阅读:
    websocket协议
    LeakCanary 中文使用说明
    编程习惯1
    Spring事务管理(详解+实例)
    微信 JS API 支付教程
    mi面试题
    最锋利的Visual Studio Web开发工具扩展:Web Essentials详解(转)
    .Net 高效开发之不可错过的实用工具
    手机版开发框架集合
    node.js建立简单应用
  • 原文地址:https://www.cnblogs.com/gfhh/p/11429847.html
Copyright © 2011-2022 走看看