• UI自动化之等待


    一、等待

    1、固定等待

    也就是使用sleep()方法

    2、隐式等待

    使用到的方法是implicitly_wait的方法,可以把它理解为设置最长等待时间

    3、显式等待

    主要指的是程序每隔一段时间执行自定义的程序判断条件,如果判断成立,程序就会继续执行,那么如果判断失败,就会报TimeOutExpection的异常信息

    实战操作

    隐式等待

    from selenium import webdriver
    # 隐式等待 driver=webdriver.Chrome() driver.maximize_window() driver.get("http://www.baidu.com") driver.implicitly_wait(50) #最长等待时间 driver.quit()

    显式等待

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait as W
    from selenium.webdriver.support import expected_conditions as es
    from selenium.webdriver.common.by import By
    
    # 显示等待
    # element_to_be_clickable:元素可见时操作
    driver=webdriver.Chrome()
    driver.maximize_window()
    driver.get("http://www.baidu.com")
    driver.implicitly_wait(50)
    so=W(driver=driver,timeout=10).until(method=es.element_to_be_clickable((By.ID,"kw")))
    so.send_keys("风景宜人的下一句是")
    print("输入的关键字:",so.get_attribute("value"))
    driver.quit()

    二、验证错误文本信息

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait as W
    from selenium.webdriver.support import expected_conditions as es
    from selenium.webdriver.common.by import By
    import time
    
    # text_to_be_present_in_element()元素的文本资源加载出来
    driver=webdriver.Chrome()
    driver.maximize_window()
    driver.get("https://mail.sina.com.cn/")
    driver.implicitly_wait(50)
    driver.find_element_by_class_name("loginBtn").click()
    time.sleep(5)
    divText=W(driver=driver,timeout=10).until(method=es.text_to_be_present_in_element(
       (By.XPATH,'/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[2]/label'),
    text_
    ="请输入邮箱名")) driver.quit()

    三、判断元素是否可见

    from selenium import webdriver
    from selenium.webdriver.support.ui import WebDriverWait as W
    from selenium.webdriver.support import expected_conditions as es
    from selenium.webdriver.common.by import By
    import  time
    
    # 判断元素是否可见
    driver=webdriver.Chrome()
    driver.maximize_window()
    driver.get("http://www.baidu.com/")
    driver.implicitly_wait(50)
    time.sleep(5)
    about
    =W(driver=driver,timeout=10).until(method=es.visibility_of_element_located((By.LINK_TEXT,"关于百度"))) print(about.text) about.click() time.sleep(5) driver.quit()

    四、JS事件

    #页面的滑动
    from selenium import webdriver
    import time
    
    driver=webdriver.Chrome()
    driver.maximize_window()
    driver.get("http://www.baidu.com")
    driver.implicitly_wait(60)
    
    driver.find_element_by_id("kw").send_keys("鸢尾蝶")
    time.sleep(5)
    driver.find_element_by_id("su").click()
    time.sleep(7)
    
    #浏览器划到页面最底部
    down="var q=document.documentElement.scrollTop=10000"
    driver.execute_script(down)
    time.sleep(6)
    
    #点击下一页
    driver.find_element_by_link_text("下一页 >").click()
    time.sleep(6)
    
    #把浏览器页面滑到最底部
    down="var q=document.documentElement.scrollTop=10000"
    driver.execute_script(down)
    time.sleep(6)
    
    #把浏览器滑到最顶部
    up="var q=document.documentElement.scrollTop=0"
    driver.execute_script(up)
    time.sleep(5)
    
    driver.quit()

    五、富文本事件

    from  selenium import webdriver
    import time as t
    
    driver=webdriver.Chrome()
    driver.maximize_window()
    driver.implicitly_wait(50)
    driver.get("https://uutool.cn/ueditor/")
    t.sleep(3)
    driver.switch_to.frame("ueditor_0")
    t.sleep(3)
    driver.find_element_by_xpath("/html/body").send_keys("今天要做什么呢?")
    t.sleep(3)
    driver.quit()

    六、时间控件

    时间控件具体为检查页面显示有readonly。为了可以操作写入。选择内容操作

    那么我们需要填写时间的属性,具体解决问题的步骤为:

    1.1、取消时间控件的只读属性

    1.2、取消只读属性后,操作input控件的value,所以input里面输入的内容最终是在value的属性里面

    from selenium import webdriver
    import time
    
    def startTime(driver,content):
    #开始时间控件
      js="$(\"input[placeholder='开始时间≥当前时间']\").removeAttr('readonly');" \
         "$(\"input[placeholder='开始时间≥当前时间']\").attr('value','{0}')".format(content)
      driver.execute_script(js)
    
    def endTime(driver,content):
    #结束时间控件
      js="$(\"input[placeholder='结束时间>开始时间']\").removeAttr('readonly');" \
         "$(\"input[placeholder='结束时间>开始时间']\").attr('value','{0}')".format(content)
      driver.execute_script(js)
    
    driver=webdriver.Chrome()
    driver.maximize_window()
    driver.get("file:///D:/%E5%AD%A6%E4%B9%A0%E4%B8%B4%E6%97%B6%E6%96%87%E4%BB%B6/Time/index.html")
    time.sleep(5)
    startTime(driver=driver,content="2021-01-01 12:00")
    time.sleep(5)
    endTime(driver=driver,content="2022-01-01 12:00")
    time.sleep(5)
    
    driver.quit()

    七、当前页面截图

    #把当前页面截图,在当前目录下生成一个图片。
    from selenium import webdriver
    import time
    
    driver=webdriver.Chrome()
    driver.maximize_window()
    driver.get("http://www.baidu.com")
    time.sleep(6)
    driver.get_screenshot_as_file(filename="bd.png")
    time.sleep(3)
    driver.quit()

     

  • 相关阅读:
    django错误参考
    Pyhton模块学习
    jmeter
    SQL SERVER 2008
    touch的属性
    Sql Server Alter语句
    安装LoadRunner提示缺少vc2005_sp1_with_atl..
    sql语句
    数据库的知识
    十天学会<div+css>横向导航菜单和纵向导航菜单
  • 原文地址:https://www.cnblogs.com/Kaylee/p/16118283.html
Copyright © 2020-2023  润新知