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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM