UI自动化selenium 对浏览器的操作
PC端执行自动化测试脚本是在浏览器下进行执行,下面描述一下webdriver对浏览器的一些操作
1、控制浏览器窗口的大小的操作
from selenium import webdriver driver = webdriver.Chrome() driver.get("https://www.baidu.com/") driver.set_window_size(800,1200) #设置浏览器界面大小 driver.maximize_window() #浏览器界面最大化
2、页面的前进、后退、刷新、获取当前页url、表单提交、获取元素的问题本、获取元素的属性、元素是否可见
driver.back() #页面回退 driver.forward() #页面前进 driver.refresh() #页面刷新 url=driver.current_url #获取当前页面的url print(url) si=driver.find_element_by_xpath('//*[@id="kw"]').size #获取当前输入框的大小 print(si) driver.find_element_by_xpath('//*[@id="su"]').submit() #表单提交 text=driver.find_element_by_xpath('//*[@id="su"]').text #获取元素的文本 print(text) attri = driver.find_element_by_xpath('//*[@id="su"]').get_attribute('type') #获取元素的属性 print(attri) displayed = driver.find_element_by_xpath('//*[@id="su"]').is_displayed() #元素是否可见 print(displayed)
3、鼠标操作事件,使用鼠标其他事件首先要引入ActionChains类
from selenium.webdriver.common.action_chains import ActionChains
#右击context_click() ri_click = driver.find_element_by_xpath('//*[id="su"]') #选中一个元素 ActionChains(driver).context_click(ri_click).perform() #使用ActionChains点右击,Proform()执行ActionChains中存储的行为 #双击double_click double = driver.find_element_by_xpath('//*[id="su"]') ActionChains(driver).double_click(double).perform() #拖拽drag_and_drop start= driver.find_element_by_xpath('//*[id="su"]') end = driver.find_element_by_xpath('//*[id="kw"]') ActionChains(driver).drag_and_drop(start,end).perform() #悬停 move =driver.find_element_by_link_text('设置') ActionChains(driver).move_to_element(move).perform()
4、键盘操作事件
#输入 send_keys() driver.find_element_by_xpath('//*[@id="kw"]').send_keys('selenium') #删除一个字符,引入Keys模块,send_keys(Keys.BACK_SPACE) from selenium.webdriver.common.keys import Keys driver.find_element_by_xpath('//*[@id="kw"]').send_keys(Keys.BACK_SPACE) #输入空格加字符,send_keys(Keys.SPACE) driver.find_element_by_xpath('//*[@id="kw"]').send_keys(Keys.SPACE) driver.find_element_by_xpath('//*[@id="kw"]').send_keys('selenium') #Ctrl+a全选 ,send_keys(Keys.CONTROL,'a') driver.find_element_by_xpath('//*[@id="kw"]').send_keys(Keys.CONTROL,'a') #Ctrl +x ,send_keys(Keys.CONTROL,'x') driver.find_element_by_xpath('//*[@id="kw"]').send_keys(Keys.CONTROL,'x') #回车操作,send_keys(Keys.ENTER) driver.find_element_by_xpath('//*[@id="kw"]').send_keys(Keys.ENTER)
5、元素等待分强制等待、隐式等待、显示等待,显示等待的优先级高于隐式等待,不论显示等待还是隐式等待,只要元素出现就进行下一步,如到时时间不出现则抛出异常
from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC #强制等待 time.sleep(6) #隐式等待 driver.implicitly_wait(10) #显示等待 element = WebDriverWait(driver,10,1).until(EC.presence_of_element_located((By.XPATH,'//*[@id="kw"]'))) element.send_keys('selenium')
6、iframe表单 和多窗口切换处理
#在Web应用遇到frame/iframe表单嵌套页面通过webdriver的switch_to.frame()和switch_to.parent_frame切入和跳出frame表单 driver._switch_to.frame('if') #id定位也可以用其他方法定位 driver.find_element_by_link_text('').send_keys('selenium') #返回上一级表单 driver.switch_to.parent_frame() #返回最外层 driver.switch_to.default_content() #获取当前窗口句柄 handle = driver.current_window_handle #获取所有窗口句柄 all_handle = driver.window_handles #通过句柄切换窗口 driver.switch_to.handle(handle) #获取当前所有打开的窗口句柄返回的为一个列表,可以通过遍历循环和列表索引获取对应的handle
7、警告窗口的处理
#警告窗口的处理 alert = driver.switch_to.alert #获取文本 text = alert.text #确认 alert.accept() #取消 alert.dismiss() #有输入框进行输入 alert.send_keys('selenium')
8、文件上传
(1)、普通上传,将本地文件的路径作为一个值凡在input 标签中,通过from表单进行提交;Send_keys直接可以上传
(2)、插件上传
基于flash与JavaScript 或ajax等技术实现的上传
Autoit windows GUI (图形用户界面)自动化工具,操作本地的窗口
AutoIT工具抓取定位元素:文件名称、打开按钮的元素信息
Vbs
AutoIT自带的IDE进行编写脚本
把脚本生成EXE程序
#点击打开要上传的窗口 driver.find_element_by_name('file').click() #调用生产的脚本进行上传文件 os.system('生成可执行的.exe文件')

浙公网安备 33010602011771号