让我们考虑超时是10秒。
元素在3秒内找到。
在所有三个等待案例中,webdriver的响应是什么
答案 0 :(得分:0)
一般情况下,尽管您选择了哪种方法,但只要找到元素,程序就会继续。
其三种方法之间的区别是WHEN,驱动程序会找到该元素。
另见Differences between impilicit, explicit and fluentwait
我只是做了一个例子,将这些方法与python进行比较(如果有任何不同的结果使用Java来实现这个,请告诉我)
**我建立一个空白页面和一个一块脚本产生一个id =" new_elem" 3秒后。**我用PhantomJS作为硒驱动剂。
我想首先介绍处理find元素任务的方法。
Fluent wait, 1s interval: waited 3.076176 seconds
Fluent wait, 5s interval: waited 5.587320 seconds
Explicit wait, 10s wait time: waited 3.105178 seconds
Implicit wait, 10s wait time: waited 3.138179 seconds
1.1流利等待1秒间隔
start = time.time()
driver.get('http://127.0.0.1:5000')
element = WebDriverWait(driver, 10, poll_frequency=1).until(EC.presence_of_element_located((By.ID, 'new_elem')))
print("Fluent wait, 1s interval: waited %f seconds" % (time.time()-start))
3秒后,驾驶员找到了该元素。
1.2流利等待,间隔为5秒
start = time.time()
driver.get('http://127.0.0.1:5000')
element = WebDriverWait(driver, 10, poll_frequency=5).until(EC.presence_of_element_located((By.ID, 'new_elem')))
print("Fluent wait, 5s interval: waited %f seconds" % (time.time()-start))
在元素出现后,驱动程序没有立即找到元素,但是在5秒间隔之后。
<强> 2。明确等待,等待时间为10秒
start = time.time()
driver.get('http://127.0.0.1:5000')
element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'new_elem')))
print("Explicit wait, 10s wait time: waited %f seconds" % (time.time()-start))
默认情况下,WebDriverWait的轮询间隔为0.5秒。所以司机在3秒后发现了这个元素。
3隐含等待,等待时间为10秒
start = time.time()
driver.implicitly_wait(10)
driver.get('http://127.0.0.1:5000')
element = driver.find_element_by_id('new_elem')
print("Implicit wait, 10s wait time: waited %f seconds" % (time.time()-start))
请注意,隐含的等待时间是全局设置选项。一旦设置,每当调用find_element方法时,它会等待等待时间才能找到元素。但是一旦找到了目标,它就会返回结果而不再等待时间 此外,您无法通过隐式等待设置轮询间隔。它将继续尝试以较短的时间间隔从DOM中轮询某些元素。