UI自动化测试4.8
UI自动化需要注意的问题:一定要等资源加载完成 ,它有3种加载方式
1、固定等待,也就是使用sleep()方法
2、隐式等待,使用到的方法是implicitly_wait的方法,可以把它理解为设置最长等待时间
3、显式等待,主要指的是程序每隔一段时间执行自定义的程序判断条件,如果判断成立,程序就会继续执行,那么如果判断失败,就会报TimeOutExpection的异常信息。
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as es
from selenium.webdriver.common.by import By
import time as t
'''element_to_be_clickable() 显式等待'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
driver.implicitly_wait(60)
so=WebDriverWait(
# driver进行实例化
driver=driver,
# 等待10秒 until这个是个方法
timeout=10).until(
# 获取的类型是个元组的数据类型后面要加括号包住method是until的形参
method=es.element_to_be_clickable((By.ID,'kw')))
# 输入关键字
so.send_keys('无涯 接口测试')
# 获取文本信息
print('输入的关键字:',so.get_attribute('value'))
driver.quit()

'''implicitly_wait()隐式等待'''
# driver=webdriver.Chrome()
# driver.maximize_window()
# driver.get('https://www.baidu.com/')
# # 隐式等待 设置的最长等待时间
# driver.implicitly_wait(60)
# driver.quit()
'''text_to_be_present_in_element() 元素的文本资源加载出来'''
# driver=webdriver.Chrome()
# driver.maximize_window()
# driver.get('https://mail.sina.com.cn/')
# driver.implicitly_wait(60)
# driver.find_element_by_class_name('loginBtn').click()
# t.sleep(5)
# divTest=WebDriverWait(
# driver=driver,
# # 等待10秒 until这个是个方法
# timeout=10).until(
# # 获取的类型是个元组的数据类型后面要加括号包住method是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[1]/span[1]'),text_='请输入邮箱名'))
# driver.quit()
'''visibility_of_element_located()判断元素是否可见'''
# driver=webdriver.Chrome()
# driver.maximize_window()
# driver.get('https://www.baidu.com/')
# driver.implicitly_wait(60)
# t.sleep(5)
# about=WebDriverWait(
# driver=driver,
# # 等待10秒 until这个是个方法
# timeout=10).until(
# # 获取的类型是个元组的数据类型后面要加括号包住method是until的形参
# method=es.visibility_of_element_located((
# By.LINK_TEXT,'关于百度')))
# print(about.text)
# about.click()
# t.sleep(5)
# driver.quit()

from selenium.webdriver.common.keys import Keys
import time as t
from selenium import webdriver
'''send_keys()键盘事件'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
driver.implicitly_wait(60)
so=driver.find_element_by_id('kw')
so.send_keys('接口测试')
so.send_keys(Keys.CONTROL,'a')
t.sleep(4)
so.send_keys(Keys.CONTROL,'c')
t.sleep(4)
# so.send_keys(Keys.F5)
# t.sleep(4)
driver.quit()
'''JS操作--这个下滑组件 下一页 还有上滑组件'''
import time as t
from selenium import webdriver
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://www.baidu.com/')
driver.implicitly_wait(60)
driver.find_element_by_id('kw').send_keys('接口测试')
driver.find_element_by_id('su').click()
t.sleep(10)
down='var q=document.documentElement.scrollTop=10000'
driver.execute_script(down)
t.sleep(5)
# driver.quit()
driver.find_element_by_link_text('下一页 >').click()
t.sleep(4)
driver.execute_script(down)
t.sleep(5)
up='var q=document.documentElement.scrollTop=0'
driver.execute_script(up)
t.sleep(5)
driver.quit()
'''用iframe实现在富文本里面输入内容'''
driver=webdriver.Chrome()
driver.maximize_window()
driver.get('https://uutool.cn/ueditor/')
driver.implicitly_wait(30)
driver.switch_to.frame('ueditor_0')
t.sleep(5)
driver.find_element_by_xpath('/html/body').send_keys('sdsaas')
t.sleep(5)
driver.quit()
'''时间控件'''
我们需要填写时间的属性,具体解决问题的步骤为:
取消时间控件的只读属性
取消只读属性后,操作input控件的value,其实我们知道input里面输入的内容最终是在value的属性里面。
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:///C:/Users/Administrator.lwp-PC/Desktop/Time/index.html')
t.sleep(3)
startTime(driver=driver,content='2000-01-01 00:00')
t.sleep(3)
endTime(driver=driver,content='2022-1-15 00:00')
t.sleep(4)
# 截图当前的截图
driver.get_screenshot_as_file(filename='index.png')
t.sleep(4)
driver.quit()

浙公网安备 33010602011771号