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文件')

 

posted @ 2021-07-23 17:03  顺逆流  阅读(258)  评论(0)    收藏  举报