webdriver--設置元素等待


  • sleep():腳本執行到某一位置時“睡一會”,再繼續執行;參數的單位是s;sleep方法由python的time模塊提供,有兩種引入和使用方式
    import time
    time.sleep(5)
    
    from time import sleep
    sleep(5)

    在未了解隱式等待這些方式時,sleep方法是我一直用的,有時想看看頁面執行到某個位置時的數據顯示,或頁面跳轉后定位新頁面的元素等情況,頁面執行太快看不到或者定位不到元素,都是通過“睡一會”的方式再繼續進行

  • implicitly_wait():隱式等待,通過一定的時長等待頁面上某元素加載完成,若超出時長還未加載出來則拋出NoSuchElementException異常
  1. 設置的時間並不是一個固定的等待時間,不影響腳本執行速度;
  2. 當腳本執行到某個元素定位時,如果可以定位繼續執行;
  3. 定位不到時以輪詢方式不斷判斷元素是否定位到,只要時間內定位到就繼續執行,不必再等待剩余時長
  4. 在超時后,拋出異常    
     1 driver.get("http://www.zgckxt.com/THome/PC_SelfLearn/Index?id=1056&type=1")
     2 driver.find_element_by_xpath(".//*[@id='form1']/div/div/div[3]/div/div[1]/div[2]/div[1]/div[2]/a[1]/i").click()
     3 print(driver.current_url)
     4 
     5 #time.sleep(3)
     6 driver.implicitly_wait(3)
     7 try:
     8      print(driver.find_element_by_css_selector("div.m-battit").text)
     9 except NoSuchElementException as e:
    10      print(e)
    11 
    12 print(driver.current_url)

     

  • 顯式等待,有些復雜用起來,暫不做研究

目前用起來sleep比較順手,簡單方便;隱式等待看起來處理機制更完美,更健全,也更靈活。在以后的嘗試過程中兩者靈活使用吧


免責聲明!

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



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