一.强制等待
time.sleep(等待时间)
二.显示等待
明确等到摸个条件满足之后,再执行下一步操作
程序默认每隔0.5秒看一眼,如果条件成立了,则执行下一步,否则继续等待,直到超过设置的最长时间,然后抛出TimeoutException
from selenium.webdriver.support.ui import WebDriverWait
wait=WebDriverWait(driver,10)
until 直到达成条件就不再等待
until_not 直到不满足条件就不再等待
from selenium.webdriver.supportimport expected_conditions as ec
wait.until(ec.presence_of_element_located((By.XPATH,''))) 返回的是一个元素
ec等待条件:
判断当前页面的title是否精确等于预期
title_is
判断当前页面的title是否包含预期字符串
title_contains
判断某个元素是否被加到了dom树里,并不代表该元素一定可见
presence_of_element_located
判断某个元素是否可见,可见代表元素非隐藏
visibility_of_element_located
跟上面的方法做一样的事情,只是上面的方法要传入locator,这个方法直接传定位到的element就好了
visibility_of
判断是否至少有一个元素存在于dom树种
presence_of_all_elements_located
判断某个元素中的text是否包含预期的字符串
text_to_be_present_in_element
判断某个元素中的value属性是否包含了预期的字符串
text_to_be_present_in_element_value
判断该frame是否可以switch进去,如果可以的返回true并switch进入,否则返回false
frame_to_be_available_and_switch_to_it
判断某个元素中是否不选在与dom树或不可见
invisibility_of_element_located
判断某个元素是否可见并且是enable的,这样的话才叫clickable
element_to_be_clickable
等某个元素从dom树中移除,这个方法返回的True或False
staleness_of
判断某个元素是否被选中了,一般用在下拉列表
element_to_be_selected
跟上面的方法一样,只是这要方法传入locator
element_located_to_be_selected
判断某个元素的选中状态是否符合预期
element_selection_state_to_be
跟上面的方法一样,只是这个方法传入locator
element_located_selection_state_to_be
判断页面上是否存在alert
alert_is_present
三.隐形等待
driver.implicitly_wait(10)
设置最长等待时间,在这个时间内只要有个时间点加载完成,则执行下一步代码,在整个driver会话周期内,设置一次即可,全局都可用,一次会话只调用一次
四.iframe操作
iframe:一个网页里面嵌套了另外一个框架/页面
如果我们要操作的元素,在内嵌的iframe页面中,那么必须要从当前页面,切换到iframe当中,然后在查找元素并执行操作
切换iframe
1.driver.switch_to.frame(iframe的name属性\iframe的WebElement对象\iframe的下标(当前页面中第几个iframe))
2.driver.frame_to_be_available_and_switch_to_it(iframe的name属性\iframe的WebElement对象\iframe的下标(当前页面中第几个iframe)
退出iframe
driver.switch_to.default_content()
driver.switch_to.parent_frame()
五.弹出框操作
弹出框的种类:
1.页面弹框
2.alert弹出框
alert弹出框操作
1.使用switch_to方法先切换到浏览器弹出框
alert = driver.switch_to.alert
2.alert类提供的操作方法
alert.dismiss() 关闭
alert.accept() 接受
alert.text() 获取弹出框的内容
alert.send_keys() 往弹出框里面输入文本
六.窗口切换
1.获取当前所有的窗口
windows = driver.window_handles
2.切换到指定的窗口
driver.switch_to.window(windows[-1]) 打开最新的窗口
driver.switch_to.window(windows[0])切换到第一个窗口
3.获取当前窗口的句柄
driver.current_wondow_handle
七.submit方法
如果是在form中提交,可以直接使用submit方法