selenium设置元素发现超时等待时间-python

来源:互联网 发布:tempdb数据库占满c盘 编辑:程序博客网 时间:2024/05/21 07:53

前言:之前写了个脚本,要在ip站点网站查询一千多个域名的备案信息,但是有些域名是没有备案的,所以就找不到元素,虽然我已经设置了异常判断,但是默认等待的30秒时间让我无法忍受。然后经过各种百度找到了解决的办法。


外话:一同事用nodejs异步发包的方式2分钟就解决了一千多个数据。


先说说JAVA里加的语句

在  Webdirver driver = new FirefoxDriver();(可能是其他浏览器驱动,没关系。) 后,加上。driver.manage().timeouts().implicitlyWait(3, TimeUnit.SECONDS); 默认是30秒,可以改小点
然后是我们的python环境下:

#导入 WebDriverWait 包

​from  selenium.webdriver.support.ui import WebDriverWait

​#导入 time 包import time

sleep()    设置固定等待时间

——如:time.sleep(5)  #等待5秒

implicitly_wait()    等待一个元素被发现,或一个命令完成,超出了设置时间则抛出异常

——如:driver.implicitly_wait(30)

           driver.find_element_by_id("id").click()

WebDriverWait()    在设置时间内,默认每隔一段时间检测

检测一次当前页面元素是否存在,如果超过设置时间检测不到则抛出异常

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

——driver:WebDriver 的驱动程序(Ie, Firefox, Chrome 或远程)

——timeout:最长超时时间,默认以秒为单位

——poll_frequency:休眠时间的间隔(步长)时间,默认为 0.5 秒

——ignored_exceptions:超时后的异常信息,默认情况下抛 NoSuchElementException 异常

——如1:element = WebDriverWait(driver, 10).until(lambda

 x : x.find_element_by_id("id"))

           element.send_keys("selenium")

——如2:element = WebDriverWait(driver, 10).until(lambda x: x.find_element_by_id(“Id”))

            is_disappeared = WebDriverWait(driver, 30, 1, (ElementNotVisibleException)).until_not(lambda

 x: x.find_element_by_id(“someId”).is_displayed())

WebDriverWai()一般由 unit()或 until_not()方法配合使用:

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

1 0
原创粉丝点击