专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Python+Selenium隐式等待操作代码

案例:

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

具体代码和注释如下:

 # #!/usr/bin/python3
 # -*- coding: utf-8 -*-
 # @Time : 2020/7/30 15:36
 # @Author : Gengwu
 # @FileName: implicitly_wait.py
 # @Software: PyCharm

 from selenium import webdriver
 from selenium.common.exceptions import NoSuchElementException #导入一个没有这个元素的类,定位到没有这个元素会抛出一个异常
 from time import ctime #ctime导入后作为一个时间戳判断一下
 from time import  sleep

 driver=webdriver.Chrome()
 driver.get('https://www.baidu.com/')
 driver.maximize_window()

 driver.implicitly_wait(5) #implicitly_wait等待5秒,最多等待5s,超过5秒就会报错

 #检测搜索是否存在   
 #操作思路:先定位到搜索框,输入字符,在点击操作
 try:
     print(ctime()) #打印时间
     driver.find_element_by_css_selector('#kw').send_keys('python') #定位到搜索按钮,搜索按钮元素是KW,定位到输入python字符
     driver.find_element_by_css_selector('#su').click() #定位到点击click 第一个元素等待5秒,等待5秒以后看第二个元素的约束
 except NoSuchElementException as mas: #直到所有的执行完成,隐式等待就完成了
     print(mas) #出现异常就会打印出异常
 finally:
     print(ctime()) #最后打印出时间

 sleep(3)
 driver.quit()

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

 C:\Users\EDZ\Desktop\selenium_demo\venv\Scripts\python.exe C:/Users/EDZ/Desktop/selenium_demo/webdriver/implicitly_wait.py
 Thu Jul 30 16:54:53 2020
 Thu Jul 30 16:54:53 2020

 Process finished with exit code 0

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

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

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

执行后的结果如下:

C:\Users\EDZ\Desktop\selenium_demo\venv\Scripts\python.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!

 

文章永久链接:https://tech.souyunku.com/45949

未经允许不得转载:搜云库技术团队 » Python+Selenium隐式等待操作代码

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们