栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

ui-selenium自动化简介及ui定位

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ui-selenium自动化简介及ui定位

UI自动化测试,并不是测试页面UI,而是跑页面功能

使用selenium的优点

1、工具免费

 2、安装简单,小巧,selenium其实就是一个包

3、支持多语言(java,python)+selenium完成自动化测试

4、支持多平台(window,linux)

5、支持多浏览器 (ie,firefox,chrome)

selenium 原理:通过selenium中的webdriver以及浏览器驱动去驱动浏览器和

捕捉页面元素进行操作元素,从而达到模拟人工操作的效果

UI自动化的优点?

1.解决重复性功能测试和验证

2.减少冒烟测试,回归测试的人力成本,节省时间提高测试效率

3.减少测试人员在回归测试时用例漏测和验证点的漏测

什么样项目适合做自动化测试?

1.项目周期较长

2.项目版本稳定

自动化测试一般在什么阶段开始实施:

1.自动化脚本在什么阶段输出

产品验收通过或者项目版本上线后

2.脚本执行在什么阶段开始执行

冒烟测试--覆盖原有功能

回归阶段--包括bug验证上线

自动化如何进行开展工作:

1.熟悉业务需求,筛选出需要实现自动化测试的业务需求

2.筛选出业务需求的自动化场景,及找出这些场景的功能测试用例

3.选取自动化测试工具(selenium/robotframework)

  3.1根据当前团队成员熟悉程度

  3.2选取主流的

4.自动化测试框架设计搭建

5.自动化测试用例的输出及执行和维护

为什么要实现窗口最大化?

答:为了元素定位的时候更加准确,

防止元素折叠导致元素定位不到代码出现异常

#1.id定位

#driver.find_element_by_id("kw").send_keys('python')

# a = driver.find_element_by_id("kw")

# a.send_keys("python")

#2.name定位

#driver.find_element_by_name("wd").send_keys("武汉张三")

#3.class定位方法

#driver.find_element_by_class_name("s_ipt").send_keys("linux")

#4.css定位(#表示id,.表示class)

#driver.find_element_by_css_selector('.s_ipt').send_keys("武汉张三")

#5.xpath定位方法

  #xpath绝对路径写法

#driver.find_element_by_xpath('html/body/div[1]/div[1]/div[5]/div/div/form/span[1]/input').send_keys("武汉张三")

  #xpath相对路径写法(两个"//"表示相对路径,*通配符匹配任意的标签名)

#driver.find_element_by_xpath('//*[@id="kw"]').send_keys('武汉张三')

 #xpath 层级定位/父级定位(/表示上下级关系)

#driver.find_element_by_xpath('//*[@id="form"]/span[1]/input').send_keys("武汉张三")

#6.link_text定位方法,用于定位链接文本

#driver.find_element_by_link_text("hao123").click()

#7.partial_link_text 定位部分链接文本(连续部分)

#driver.find_element_by_partial_link_text('123').click()

#8.tag_name  标签名定位方法

# s =driver.find_elements_by_tag_name("input")#定位所有的input标签

# for i in s:

#     if i.get_attribute('id')=='kw':#当i这个id属性的值为kw

#         i.send_keys('张三')

#9.javascript定位

js ="document.getElementById('kw').value='selenium'"

driver.execute_script(js)#通过execute_script执行js脚本

id定位           尽可能使用,第一选择

name定位     第二选择

class 定位     第三选择

link_text定位

partial_link_text定位

xpath定位    第四选择

tag_name定位

javascript定位

css定位 第五选择

# from selenium import webdriver

# import time

# import random

# driver= webdriver.Chrome()

# driver.get("https://www.baidu.com")

# driver.maximize_window()

# time.sleep(3)

# driver.find_element_by_name("username").send_keys('admin')#输入账号

# time.sleep(2)

# driver.find_element_by_name('password').send_keys('123456')#输入密码

# #定位性别单选框

# driver.find_element_by_css_selector('#girl').click()#点击女士

# time.sleep(2)

# driver.find_element_by_css_selector('#boy').click()#点击男士

# #多选框

# # driver.find_element_by_id('p').click()

# # driver.find_element_by_id('j').click()

# # driver.find_element_by_id('h').click()

# # driver.find_element_by_id('g').click()

# # time.sleep(3)

# checkbox=driver.find_elements_by_name('subject')

# for i in range(3):

#     inx = random.randint(0,len(checkbox)-1)

#     box = checkbox.pop(inx)

#     box.click()

#     time.sleep(1)

# #下拉框定位

# select=driver.find_element_by_id("school")#定位下拉框

# time.sleep(2)

# select.find_element_by_css_selector('[value="sh"]').click()#根据下拉框value值进行定位并点击选择上海校区

# time.sleep(2)

# select.find_element_by_css_selector('[value="tj"]').click()#根据下拉框value值进行定位并点击选择天津校区

#

#上传文件

# fi = r'D:htmldebug.log'#需要上传的文件

# a =driver.find_element_by_xpath('/html/body/form/table/tbody/tr[8]/td[2]/p/input')#上传按钮

# a.send_keys(fi)

#alert弹窗处理

# driver.find_element_by_name('name').click()

# text= driver.switch_to.alert.text#获取弹窗文本

# print(text)#打印文本

# time.sleep(1)

# #driver.switch_to.alert.accept()#点击弹窗确定按钮

# driver.switch_to.alert.dismiss()#点击弹窗取消按钮

# driver.set_window_size(1000,600)#设置窗口大小

# size1=driver.get_window_size()#获取设置后的窗口大小

# print(size1) #{'height': 600, 'width': 1000}

# time.sleep(1)

# #driver.close()

# driver.quit()

#window.scrollTo页面滑动

# js='window.scrollTo(0,1000)'#设定从顶部0的位置滑到1000位置

# driver.execute_script(js)#执行脚本,开始下滑

# time.sleep(3)#强制等待

# js1='window.scrollTo(0,0)'#返回顶部

# driver.execute_script(js1)#执行脚本

# time.sleep(2)#强制等待

# driver.close()#退出

#keys类:作用就是模拟鼠标键盘的快捷操作

# from selenium import webdriver

# import time

# from selenium.webdriver.common.keys import Keys

# import random

# driver= webdriver.Chrome()

# driver.get("https://www.baidu.com")

# driver.maximize_window()

# time.sleep(3)

# driver.find_element_by_id('kw').send_keys('武汉张三')

# driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'a')#全选

# driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'x')#剪切

# #driver.find_element_by_id('kw').send_keys(Keys.CONTROL,'v')#粘贴

# driver.find_element_by_id('kw').send_keys(Keys.ENTER)#回车

# def ke_ys(a,b):

#     return driver.find_element_by_id(a).send_keys(b)

# if __name__ == '__main__':

#     ke_ys('kw','武汉张三')#先输入

#     ke_ys('kw',(Keys.ENTER))

#悬停

# from selenium import webdriver

# import time

# from selenium.webdriver.common.action_chains import ActionChains

# import random

# driver= webdriver.Chrome()

# driver.get("https://www.baidu.com")

# driver.maximize_window()

# time.sleep(3)

# driver.find_element_by_id('s-usersetting-top').click()#点击设置功能

# driver.find_element_by_class_name('setpref').click()#点击搜索设置功能

# time.sleep(2)

# driver.find_element_by_xpath('//*[@id="se-setting-7"]/a[2]').click()#点击保存设置

# time.sleep(2)

# driver.switch_to.alert.accept()#点击弹窗确定按钮

# driver.quit()

#三种等待方式

# #1.sleep(秒数) :强制等待

# 2.implicitly_wait(秒数): 隐式等待

# 等待页面所有的元素加载完成,则会自动进行下一步操作,如果等待时间超过设置的时间则会报错

# 3.WebDriveWait:显示等待

#等待页面特定的某一个元素加载后,才会进行下一步操作,如果设定的时间内没有找到则报错

#get_screenshot_as_file 截图

# from selenium import webdriver

# import time

# driver= webdriver.Chrome()

# driver.get("https://www.baidu.com")

# driver.maximize_window()

# driver.implicitly_wait(10)

# driver.find_element_by_id('kw').send_keys("武汉")

# driver.find_element_by_id('su').click()

# path =r'D:htmlbaidu.png'#把图片保存到该路径下

# driver.get_screenshot_as_file(path)#把当前页面进行截图

# driver.close()

#窗口刷新、返回

# from selenium import webdriver

# import time

# driver= webdriver.Chrome()

# driver.get("https://www.baidu.com")

# driver.maximize_window()#窗口最大化

# driver.implicitly_wait(10)

# driver.refresh()#刷新窗口

# time.sleep(2)

# driver.find_element_by_id('kw').send_keys('武汉')

# driver.find_element_by_id('su').click()

# time.sleep(3)

# driver.back()#返回上一级

# time.sleep(2)

# #每一条用例执行完毕后需要加上一个:关闭浏览器

# driver.close()

#句柄

# from selenium import webdriver

# import time

# driver= webdriver.Chrome()

# driver.get("https://www.baidu.com")#百度

# driver.maximize_window()#窗口最大化

# time.sleep(2)

# ##driver.get("http://www.jd.com")#京东

#注意:在一个案例中不要通过get打开多个窗口,因为只能显示最后的窗口,

#前面的窗口会被后面进行覆盖;

# jd="window.open('http://www.jd.com')"

# driver.execute_script(jd)

# #如果要实现打开多个网址,需要使用window.open打开

# driver.implicitly_wait(10)

# #在京东输入框输入商品

# #driver.find_element_by_id('key').send_keys('手机')

# # title= driver.title#获取当前窗口的标题

# # print(title)#百度一下,你就知道

# #切换窗口

# head=driver.current_window_handle#获取当前的单个句柄

# print(head)

# heads=driver.window_handles#获取已知窗口的所有句柄

# # print(heads)#返回是一个列表

# #通过句柄切换窗口

# driver.switch_to.window(heads[1])

# # title1= driver.title

# # print(title1)

# driver.find_element_by_id('key').send_keys('手机')

#用刚刚讲的句柄来完成 如何判断是在百度切换到jd窗口

# from selenium import webdriver

# import time

# driver= webdriver.Chrome()

# driver.get("https://www.baidu.com")#百度

# driver.maximize_window()#窗口最大化

# time.sleep(2)

# jd="window.open('http://www.jd.com')"

# driver.execute_script(jd)

# driver.implicitly_wait(10)

# he=driver.current_window_handle#获取当前的句柄

# heads= driver.window_handles#获取所有的句柄

# for i in heads:

#     if i !=he:

#         driver.switch_to.window(i)

# tit= driver.title#获取窗口标题

# print(tit)

#iframe定位

from selenium import webdriver

import time

driver= webdriver.Chrome()

driver.get("https://www.jd.com")#京东

driver.maximize_window()#窗口最大化

driver.implicitly_wait(10)

driver.find_element_by_link_text("你好,请登录").click()

time.sleep(2)

driver.find_element_by_class_name('QQ-icon').click()

time.sleep(2)

# driver.find_element_by_id('img_out_382002847').click()

#第一种方法

#driver.switch_to.frame('ptlogin_iframe')#进入到iframe

#第二种方法

fi=driver.find_element_by_css_selector('[frameborder="0"]')

driver.switch_to.frame(fi)

time.sleep(2)

driver.find_element_by_id('img_out_382002847').click()

time.sleep(2)

driver.switch_to.default_content()#取消所有的frame,跳回最外面

driver.switch_to.parent_frame()#取消当前的frame,只跳出一层

driver.find_element_by_id('key').send_keys('手机')

driver.close()

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/674381.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号