• Python+Selenium隐式等待操作代码


    案例:

    百度输入框输入字符点击后隐形等待的操作

    具体代码和注释如下:

     1 # #!/usr/bin/python3
     2 # -*- coding: utf-8 -*-
     3 # @Time : 2020/7/30 15:36
     4 # @Author : Gengwu
     5 # @FileName: implicitly_wait.py
     6 # @Software: PyCharm
     7 
     8 from selenium import webdriver
     9 from selenium.common.exceptions import NoSuchElementException #导入一个没有这个元素的类,定位到没有这个元素会抛出一个异常
    10 from time import ctime #ctime导入后作为一个时间戳判断一下
    11 from time import  sleep
    12 
    13 driver=webdriver.Chrome()
    14 driver.get('https://www.baidu.com/')
    15 driver.maximize_window()
    16 
    17 driver.implicitly_wait(5) #implicitly_wait等待5秒,最多等待5s,超过5秒就会报错
    18 
    19 #检测搜索是否存在   
    20 #操作思路:先定位到搜索框,输入字符,在点击操作
    21 try:
    22     print(ctime()) #打印时间
    23     driver.find_element_by_css_selector('#kw').send_keys('python') #定位到搜索按钮,搜索按钮元素是KW,定位到输入python字符
    24     driver.find_element_by_css_selector('#su').click() #定位到点击click 第一个元素等待5秒,等待5秒以后看第二个元素的约束
    25 except NoSuchElementException as mas: #直到所有的执行完成,隐式等待就完成了
    26     print(mas) #出现异常就会打印出异常
    27 finally:
    28     print(ctime()) #最后打印出时间
    29 
    30 sleep(3)
    31 driver.quit()

    以上代码执行后结果如下:

    1 C:UsersEDZDesktopselenium_demovenvScriptspython.exe C:/Users/EDZ/Desktop/selenium_demo/webdriver/implicitly_wait.py
    2 Thu Jul 30 16:54:53 2020
    3 Thu Jul 30 16:54:53 2020
    4 
    5 Process finished with exit code 0

    可以看到一共执行操作不到1s

    我们把元素更改为一个找不到,看下报错异常提示。更改代码片段如下:

    1 try:
    2     print(ctime()) #打印时间
    3     driver.find_element_by_css_selector('#kw123').send_keys('python') #定位到搜索按钮,搜索按钮元素是KW,定位到输入python字符
    4     driver.find_element_by_css_selector('#su').click() #定位到点击click 第一个元素等待5秒,等待5秒以后看第二个元素的约束
    5 except NoSuchElementException as mas: #直到所有的执行完成,隐式等待就完成了
    6     print(mas) #出现异常就会打印出异常
    7 finally:
    8     print(ctime()) #最后打印出时间

    执行后的结果如下:

    C:UsersEDZDesktopselenium_demovenvScriptspython.exe C:/Users/EDZ/Desktop/selenium_demo/webdriver/implicitly_wait.py
    Thu Jul 30 17:00:36 2020
    Message: no such element: Unable to locate element: {"method":"css selector","selector":"#kw123"}
      (Session info: chrome=84.0.4147.105)
    Stacktrace:
    Backtrace:
        Ordinal0 [0x01189563+2725219]
        Ordinal0 [0x01088551+1672529]
        Ordinal0 [0x00F70359+525145]
        Ordinal0 [0x00F09755+104277]
        Ordinal0 [0x00F253C0+218048]
        Ordinal0 [0x00F1AAD0+174800]
        Ordinal0 [0x00F23D7C+212348]
        Ordinal0 [0x00F1A94B+174411]
        Ordinal0 [0x00F02528+75048]
        Ordinal0 [0x00F035A0+79264]
        Ordinal0 [0x00F03539+79161]
        Ordinal0 [0x0109D607+1758727]
        GetHandleVerifier [0x012A6546+1050150]
        GetHandleVerifier [0x012A6291+1049457]
        GetHandleVerifier [0x012B10D7+1094071]
        GetHandleVerifier [0x012A6B46+1051686]
        Ordinal0 [0x01095B06+1727238]
        Ordinal0 [0x0109EB7B+1764219]
        Ordinal0 [0x0109ECE3+1764579]
        Ordinal0 [0x010B4C05+1854469]
        BaseThreadInitThunk [0x777C6359+25]
        RtlGetAppContainerNamedObjectPath [0x77B67C24+228]
        RtlGetAppContainerNamedObjectPath [0x77B67BF4+180]
    
    Thu Jul 30 17:00:41 2020

    可以看到报错的代码从开始的

    Thu Jul 30 17:00:36 2020到
    Thu Jul 30 17:00:41 2020一共等待了5秒
    5秒找不到就报异常


    以上有问题随时讨论!
    Best Regards!
    Make a little progress every day!
     
  • 相关阅读:
    python os.stat() 和 stat模块详解
    Python中datetime库的用法
    js中Array的map()函数,其中的回调函数还能这么用
    通常用于返回值的三目运算符
    浏览器渲染页面的时候,不同的script块之间的关系
    模板字面量
    let和const
    js 数组 map方法
    一些常用的js循环,如for
    session
  • 原文地址:https://www.cnblogs.com/gengwulovestudy/p/13405014.html
Copyright © 2020-2023  润新知