selenium处理多个页面窗口并发
driver.implicitly_wait(5) #设置了5秒等待时间,之后的元素定位每次操作都进行5面超时等待,如果找到了,就马上返回,如果找不到,会等待五秒再抛出异常。#定位 di = ‘kw’ 的元素,设置等待10秒,每0.5秒检测一次,如果定位成功就结束等待,如果定位失败就重新尝试,直到定位成功或超时后报错。如果元素定位成功,结束等待,否则一直等待并进行定位检测,直到定位成功,或tim
多窗口切换
当浏览器打开多个窗口,就需要对这些窗口进行操作,如切换到某个窗口,关闭某个窗口,查看当前一共打开了多少个窗口等。
-
driver.window_handles #查看当前打开了哪几个窗口,返回的是一个列表,每个元素是一个窗口 -
driver.current_window_handle #查看当前所在的窗口 -
driver.switch_to_window(driver.window_handles[1]) #切换到窗口列表中第二个元素代表的窗口 -
driver.close() #关闭当前操作的窗口 -
driver.quit() #关闭浏览器驱动的所有窗口
测试脚本中等待方法
time.sleep() 方法
time.sleep(times) #接受一个参数,为等待的时间
强制固定等待设定的时间,即使页面已经加载完成,也会等待,知道设定的时间达成。
-
import time #导入time模块 -
time.sleep(5) #固定等待5秒
implicitly_wait() 隐式等待
由WebDriver 提供的 impliciyly_wait(times) ,可对浏览器驱动设定等待时间,对之后浏览器驱动上的访问都会生效。如果元素定位成功,结束等待,否则一直等待并进行定位检测,直到定位成功,或timeout,就停止等待,并报出超时错误。
driver.implicitly_wait(5) #设置了5秒等待时间,之后的元素定位每次操作都进行5面超时等待,如果找到了,就马上返回,如果找不到,会等待五秒再抛出异常
WebDriverWait() 显式等待
也是webdriver提供,
需要先导入模块支持:from selenium.webdriver.support.ui import WebDriverWait
WebDriverWait(dirver, timeout, poll_frequency=0.5, ignored_exceptions=None)
接受三个参数:
-
driver #浏览器驱动 -
timeout #超时时限 -
poll_frequency=0.5 #查询频率,默认为0.5秒,可以修改,也可以不管
WebDriverWait() 后面通常接 until() 或者 until_not() 搭配使用
until(method, message=“”) #一直检查,直到 method 返回为 true,第二个参数可以不设置
until_not(method, message='') #一直检查,直到method返回为false
其中,method 为一个方法,可以使用匿名函数如
-
lambda driver :driver.find_element_by_id('kw') -
ele_login = WebDriverWait(driver, 10).until(lambda driver:driver.find_element_by_id('kw'))
#定位 di = ‘kw’ 的元素,设置等待10秒,每0.5秒检测一次,如果定位成功就结束等待,如果定位失败就重新尝试,直到定位成功或超时后报错。
函数形式则可以这样:
-
def get_ele_times(driver, times, func): -
return WebDriverWait(driver, times).until(func) -
ele = get_ele_times(driver, 10, lamdba driver:driver.find_element_by_id('kw'))
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。



更多推荐



所有评论(0)