当前位置:   article > 正文

Selenium成长之路-15设置等待时间_driver.get 默认等待时长

driver.get 默认等待时长

为了保证运行的脚本正常加载,我们需要的是设置等待时间,具体有以下几种:

sleep():设置固定等待时间,主要由time包提供,也可叫强制等待,

也就是说不管页面是否加载完成,都会等待这些时间。

代码如下:

 

  1. # coding = utf-8
  2. from selenium import webdriver
  3. import time
  4. from selenium.webdriver.common.by import By
  5. # from selenium.webdriver.common.keys import Keys
  6. driver = webdriver.Chrome()
  7. url = 'http://www.baidu.com'
  8. driver.get(url)
  9. #在百度输入框输入python
  10. browser = driver.find_element(By.ID,'kw')
  11. browser.send_keys("pythonn")
  12. time.sleep(5)
  13. driver.quit()

 

implicitly_wait():webdriver包提供的一个等待方法,也叫隐式等待,

 

隐式等待是设置了一个最长等待时间,如果规定时间内网页加载完成,则进行下一步,否则一直等到时间截止,再进行下一步。

代码如下:

 

  1. # coding = utf-8
  2. from selenium import webdriver
  3. import time
  4. from selenium.webdriver.common.by import By
  5. from selenium.webdriver.common.keys import Keys
  6. driver = webdriver.Chrome()
  7. url = 'http://www.baidu.com'
  8. driver.get(url)
  9. #在百度输入框输入python
  10. browser = driver.find_element(By.ID,'kw')
  11. inp=browser.send_keys("pythonn")
  12. driver.implicitly_wait(3)
  13. #删除一个n
  14. browser.send_keys(Keys.BACK_SPACE)
  15. driver.implicitly_wait(3)
  16. #回车键
  17. browser.send_keys(Keys.ENTER)
  18. driver.implicitly_wait(10)
  19. driver.quit()

 

WebDriverWait():同样也是 webdirver 提供的方法,也叫显示等待,

 

语法结构如下:

WebDriverWait(driver,timeout,poll_frequency=0.5,ignored_exceptions=None)

driver:webdriver.Chrome()   主要就是指webdriver的驱动程序

timeout:超时时间,默认单位是秒

poll_frequency:休眠时间的间隔时间,默认0.5秒

ignored_exceptions:超时后的异常信息,默认抛出NoSuchElementException异常

配合该类的until()和until_not()方法使用,详细如下:

until(method,message=''):调用该方法提供的驱动程序作为一个参数,直到返回值不为False

unitl_not(method,message=''):调用该方法提供的驱动程序作为一个参数,直到返回值为False

主要是:程序每个xx秒查看一次,如果条件成立,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException

代码如下:

 

  1. # coding = utf-8
  2. from selenium import webdriver
  3. from selenium.webdriver.common.by import By
  4. from selenium.common.exceptions import NoSuchElementException
  5. from selenium.webdriver.support.ui import WebDriverWait
  6. driver = webdriver.Chrome()
  7. url = 'http://www.baidu.com'
  8. driver.get(url)
  9. browser = driver.find_element(By.ID,'kw')
  10. #设置现实等待,NoSuchElementException 可以不写
  11. # WebDriverWait(driver,10,1).until(lambda driver:browser)
  12. try:
  13. WebDriverWait(driver,10,2,NoSuchElementException).until(lambda driver:browser)
  14. print("test pass")
  15. except Exception as e:
  16. print("test file ",format(e))
  17. driver.quit()

这里应用了一个新函数:lambda 表达式,也叫匿名函数,宗旨就是能一句话写完的代码不需要写两句话,把def函数简单化

不懂得可以看一下廖大大的Python教程:点击这里

一般在实际项目中,隐式等待使用的频率会更高一些,但是并不是说现实等待或者强制等待不会去使用。

所以具体怎么去使用以及使用什么方法,只要能保证脚本正常运行不出错,就是可行的。

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/爱喝兽奶帝天荒/article/detail/910089
推荐阅读
相关标签
  

闽ICP备14008679号