zoukankan      html  css  js  c++  java
  • webdriver中的三大等待及窗口的切换

    一、傻等

    适用于等待5S以内

    time.sleep(seconds)

    二、隐性等待   

    implicitly_wait(30)  一个会话只需要调用一次即可,设置等待上限,比如30S,如果你在30秒内元素出现了,就不等了,去执行下一行代码,如果30秒还没有出现,就报错,超时

    driver = webdriver.Chrome()
    driver.implicitly_wait(30)

    driver.get("http://www.baidu.com")

    driver.find_element_by_id("kw").send_keys("博客园")
    driver.find_element_by_id("su").click()

    三、
    显性等待
    条件:等待  '//a[text()="_腾讯课堂"]'   可见之后,我再点击它
    3.1、等待操作 3.2、条件:可见
    30秒时间 1秒去检查一次,元素是否可见===周期
    from selenium import webdriver
    from selenium.webdriver.support.wait import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By

    driver = webdriver.Chorme()
    driver.get(https://www.baidu.com/)
    # 访问百度首页
    driver.get("https://www.baidu.com/")
    # 获取窗口数量
    handles = driver.window_handles
    # 清除输入框的信息
    driver.find_element_by_id("kw").click()
    # 输入腾讯课堂
    driver.find_element_by_id("kw").send_keys("腾讯课堂")
    # 点击百度一下
    driver.find_element_by_id("su").click()
    # 显性等待条件表达
    loc = (By.XPATH,'//div[@id="1"]//h3/a[contains(text(),"职业培训")]')
    # 显性等待 等到这个元素出现
    WebDriverWait(driver,20).until(EC.visibility_of_element_located(loc))
    # 进入官网,本操作带来了新窗口的出现
    driver.find_element(*loc).click()
    # 确认新窗口出现了再去做其他操作
    WebDriverWait(driver,20).until(EC.new_window_is_opened(handles))
    # 再次获取窗口的数量
    handles = driver.window_handles
    print(handles) # 打印窗口信息
    # 切换到新窗口
    driver.switch_to.window(handles[-1])
    print(driver.current_window_handle)
    # 等待界面可见
    # loc = (By.XPATH,'//div[@class="header-index-category-text"]')
    loc = (By.XPATH,'//input[@class="mod-search__input"]')

    WebDriverWait(driver,15).until(EC.visibility_of_element_located(loc))
    # 在输入框输入python
    # driver.find_element(*loc).click()
    driver.find_element(*loc).send_keys("python")
    # 点击搜索
    driver.find_element_by_xpath('//i[@class= "icon-font i-search-bold"]').click()
    # 切回去的
    driver.switch_to.window(wins[0]) # 回到主窗口。
    
    
     





  • 相关阅读:
    juc原子类之五:AtomicLongFieldUpdater原子类
    DICOM:C-GET与C-MOVE对照剖析
    android createbitmap函数内存溢出,求解怎样进行处理out of memory溢出问题
    TRIZ系列-创新原理-32-改变颜色原理
    FP-Growth算法之频繁项集的挖掘(python)
    个人年终总结
    J2EE之ANT
    log4net 使用与配置 每天一份log文件
    Android 完美实现图片圆角和圆形(对实现进行分析)
    Unity3d修炼之路:载入一个预制体,然后为该对象加入组件,然后查找对象,得到组件。
  • 原文地址:https://www.cnblogs.com/llqxixi/p/12391826.html
Copyright © 2011-2022 走看看