• 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支持的所有条件。



  • 相关阅读:
    JavaScript连载32-常用的鼠标事件
    Java连载138-数据库删除数据以及编译预处理
    C连载22-scanf转换说明中的修饰符
    Android连载32-实现登录密码存储功能
    JavaScript连载31-图片动态切换以及关闭图片案例
    搭建一个开源项目15-解决安装mysql不成功的问题
    Java连载137-更新数据和删除数据
    从零开始学VUE之组件化开发(注册父子结构组件)
    从零开始学VUE之组件化开发(注册局部组件)
    从零开始学VUE之组件化开发(注册全局组件)
  • 原文地址:https://www.cnblogs.com/shzw/p/14718827.html
Copyright © 2020-2023  润新知