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]) # 回到主窗口。
    
    
     





  • 相关阅读:
    QT 信号与槽 中传递自定义数据类型
    keil5 仿真时发现函数不能进入到main函数
    QT 报错分析 一
    QT 简易时间处理
    QT 编译出现 Custom Executable 对话框 问题
    win10 下装ubuntu双系统
    Vmware linux下不能联网
    Vmware Workstation
    免费在线作图,实时协作
    SVN常用问题汇总
  • 原文地址:https://www.cnblogs.com/llqxixi/p/12391826.html
Copyright © 2011-2022 走看看