selenium等待
1.强制等待
time.sleep(),必须等到设置的时间结束才能进行下一步,且只对这个地方有效
2.隐性等待
driver.implicitly_wait(),设置最大等待时间,在等待期间,获取想要的结果后就可执行下一步不必等到等待时间结束,对整个driver周期都有效
3.显性等待
WebDriverWait()类,和他的两个方法:until(),until_not(),
类的括号里可传四个参数:driver(驱动)、timeout(超时时间)、poll_frequency=POLL_FREQUENCY(轮询频率,默认0.5)、ignored_exceptions=None(等待过程中要忽略的异常),超时时间和轮询频率必填,其他两个不填也会有默认值
until(),直到满足某个条件,括号里传条件,until_not(),直到不满足某个条件,括号里传条件,
eg:
WebDriverWait(driver,10,0.5).until(EC.title_is("百度一下,你就知道"))
loc=(By.ID,"TANGRAM__PSP_11__footerULoginBtn")
WebDriverWait(driver,10,0.5).until(EC.visibility_of_element_located(loc));
部分内容转载自:https://www.cnblogs.com/zyjimmortalp/p/13417061.html
selenium里都有哪些条件
- title_is 判断title是否出现
- title_contains 判断title页面标题是否包含某些字符
- presence_of_element_located 判断某个元素是否被加载到了dom树里,但是并不代表这个元素可见
- url_contains 判断当前url是否包含某个url
- url_matches 判断当前url是否符合某种格式
- url_to_be 判断当前url是否出现
- url_changes 判断当前url是否已经发生了变化
- visibility_of_element_located 判断某个元素是否被添加到了dom树里,且宽高都大于0
- visibility_of 判断看某个元素是否可见
- presence_of_all_elements_located 判断至少有一个元素存在于dom树中,返回所有定位到的元素
- visibility_of_any_elements_located 判断至少有一个元素在页面中可见
- visibility_of_all_elements_located 判断是否所有元素都在页面中可见
- text_to_be_present_in_element 判断指定的元素中是否包含了预期的字符串
- text_to_be_present_in_element_value 判断指定的元素属性值中是否包含了预期的字符串
- frame_to_be_available_and_switch_to_it 判断iframe是否可以switch进去
- invisibility_of_element_located 判断某个元素是否在dom中不可见
- element_to_be_clickable 判断某个元素是否可见并且是enable的,也就是说是是否可以点击
- staleness_of 等待某个元素从dom中删除
- element_to_be_selected 判断某个元素是否被选中了,一般用于下拉列表中
- element_located_to_be_selected 与上面的意思一样,只不过上面实例化的时候传入的是元素对象,这个传入的是定位
- element_selection_state_to_be 判断某个元素的选中状态是否符合预期
- element_located_selection_state_to_be 与上面一样,只不过传值不同而已
- number_of_windows_to_be 判断当前窗口数是否等于预期
- new_window_is_opened 判断是否有窗口增加
- alert_is_present 判断页面是否有弹窗
以上就是selenium支持的所有条件。