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()

 

 

posted @ 2022-04-08 17:18  棠小梨  阅读(84)  评论(0编辑  收藏  举报