用windows搭建手机网站,广西建筑特种作业证件查询官网,东莞seo网络公司,网络规划设计师是高级工程师吗在当今数字化转型的浪潮中#xff0c;Web 应用已经无处不在#xff0c;而其质量保障的关键之一就是自动化测试。想象一下#xff0c;如果每次都手动验证 UI 功能#xff0c;不仅耗时耗力#xff0c;还容易遗漏问题。Python 的强大生态为 Web UI 自动化测试提供了高效的解决…在当今数字化转型的浪潮中Web 应用已经无处不在而其质量保障的关键之一就是自动化测试。想象一下如果每次都手动验证 UI 功能不仅耗时耗力还容易遗漏问题。Python 的强大生态为 Web UI 自动化测试提供了高效的解决方案。 如何用 Python 高效实现 Web UI 自动化测试有哪些工具和最佳实践可以让测试变得更加简单和可靠 随着 DevOps 和 CI/CD 的普及Web UI 自动化测试已经成为企业构建高效开发和测试流程的核心环节之一。越来越多的公司要求测试人员掌握自动化技能而 Python 作为易学易用的语言成为测试工程师的首选。 Selenium WebDriver API 一元素定位
id定位find_element_by_id();name定位find_element_by_name();class属性定位find_element_by_class_name();tag属性定位find_element_by_tag_name();元素标签之前的文本信息来定位find_element_by_link_text();取文本链接的一部分来定位find_element_by_partial_link_text();xpath多种定位策略 find_element_by_xpath(); css选择器定位 ①绝对路径
find_element_by_xpath(html/body/div[2]/div[2]/div[3]/div[2]/form/input[1]); 1
②元素属性
find_element_by_xpath(//input[idqwe]); find_element_by_xpath(//input[nameqwe]); find_element_by_xpath(//input[classqwe]); find_element_by_xpath(//*[idqwe]); 1 2 3 4
③层级属性
find_element_by_xpath(//span[classqwe]/input); find_element_by_xpath(//form[idqwe]/span[2]/input); 1 2
④运算逻辑
find_element_by_xpath(//input[idqwe and classqwer]/span/input);
① css选择器定位
find_element_by_css_selector(); 1 其中css也有多种策略
①class属性
find_element_by_css_selector(.qwe); 1
②id属性 find_element_by_css_selector(#qwe);
③标签名find_element_by_css_selector(input);
A.父子关系find_element_by_css_selector(spaninput);
B.属性定位find_element_by_css_selector([typesubmit]);
C.组合定位find_element_by_css_selector( form.fmspaninputinput.qwe);
9.BY元素定位
以上提到的8种定位方法webdriver还提供了另一套写法即统一调用find_element()方法通过BY来声明定位的方法并且传入对应定位方法的定位参数。 使用BY之前需要插入BY类
from selenium.webdriver.common.by import Byfind_element(BY.ID,qwe);
find_element(BY.NAME,qwe);
find_element(BY.CLASS_NAME,qwe);
find_element(BY.TAG_NAME,qwe);
find_element(BY.LINK_TEXT,xxxxx);
find_element(BY.PARTIAL_LINK_TEXT,dddd);
find_element(BY.XPATH,//* [idqwe]);
find_element(BY.CSS_CELECTOR, spaninput ); 二浏览器控制1
1.控制浏览器窗口大小
set_window_size();
如set_window_size(640,480); 即宽640高480
maximize_window(); 窗口最大化不需要参数直接使用
2.控制浏览器进退、前进
back(); 返回
forwar(); 前进
如 driver.back(); 其中driverwebdriver.Chrome()
3.模拟浏览器刷新
refresh(); 如driver.refresh()类似F5 4.简单元素操作
①clear(); 清除文本
②send_keys(*value); 模拟按键输入
③click(); 单击元素
举例
driver.find_element_by_id(qwe).clear()
driver.find_element_by_id(qwe).send_keys(tyyu)
driver.find_element_by_id(login).click() 5.webelement接口常用方法
size:返回元素的尺寸
text:获取元素的文本
get_attributte(name):获得属性
is_displayed():设置改元素是否用户可见 举例
sizedriver.find_element_by_id(qwe).size 获取输入框的尺寸
textdriver.find_element_by_id(qwe).text 获取文本信息
attributte driver.find_element_by_id(qwe).get_ attributte(type) 可以是id、name、type或其他任意属性
result driver.find_element_by_id(qwe). is_displayed() 返回元素的结果是否可见返回结果为Ture或者False 6.鼠标事件
perform(): 执行所有ActionChains中存储的行为
context_click(): 右击
double_click(): 双击
drag_and_drop(element, target
move_to_element(): 鼠标悬停 举例
①rom selenium.webdriver.common.action_chains import ActionChains 先引入ActionChains类
driver webdriver.Chrome()
driver.get(http://www.baidu.com)
#...
#定位到要右击的元素
right_click driver.find_element_by_id(qwe)
#对定位到的元素执行鼠标右击操作
ActionChains(driver).context_click(right_click).perform()
说明
ActionChains(driver):调用这个类将浏览器驱动driver作为参数传入
context_click(right_click):模拟邮件操作在使用时需要指定元素定位
perfom():将指定所有ActionChains中存储的行为。
②abovedriver.find_element_by_id(qwer)
ActionChains(driver).move_to_element(above).perfom()
其他方法类似 7.键盘事件
Keys类提供了键盘上所有的按键方法
from selenium.webdriver.common.keys import Keys
send_keys(Keys.BACK_SPACE) 删除键
send_keys(Keys. SPACE) 空格键
send_keys(Keys.TAB) 制表键
send_keys(Keys.ESCAPE) 回退键
send_keys(Keys.ENTER) 回车键
send_keys(Keys.CONTROL,a) 全选
send_keys(Keys.CONTROL,c) 复制
send_keys(Keys.CONTROL,x) 剪贴
send_keys(Keys.CONTROL,v) 粘贴
send_keys(Keys.F1)
...
send_keys(Keys.F12) F1-F12 8.获得验证信息
title, URL, text
举例
now_urldriver.current_url 获取当前页面URL
titledriver.title 获取当前页面title
text前边已经提及到不赘述 三浏览器控制2
9.设置元素等待
①显式等待WebDriverWait(driver,poll_fequency0.5,ignored_exceptionsNone)
②隐式等待driver.implicitly_wait(time) time可自定义
③sleep休眠sleep(time) time可自定义 10.定位一组元素
在之前定位单个元素的element后加s
find_elements_by_id();
find_elements_by_name();
find_elements_by_class_name();
find_elements_by_tag_name();
find_elements_by_link_text();
find_elements_by_partial_link_text();
find_elements_by_xpath();
find_elements_by_css_selector(); 11.多表单切换
driver.swtich_to.frame() 12.多窗口切换
driver.switch_to.widow() 用于切换到相应的窗口
current_window_handle 获取当前窗口句柄
window_handles 返回所有窗口的句柄到当前会话 13.警告框处理
text返回 alert/confirm/prompt中的文字信息
accept(): 接受现有警告框
dismiss(): 解散现有警告框
send_keys(keysToSend): 发送文本至警告框 14.上传文件
普通上传将本地文件的路径作为一个值放在input标签中通过form表单将这个值提交给服务器
插件上传指基于FlashJavaScript或Ajax等技术实现上传功能 ①send_keys()
如
from selenium import webdriver
import os
driver webdriver.Chrome()
file_pathfile:/// os.path.abspath(upfile.html)
driver.get(file_path)
#定位上传按钮添加本地文件
driver.find_element_by_name(file).send_keys(D:\\upload_file.txt)
driver.quit()
②AutoIt实现上传 下载使用http://www.autoitscript.com/site/ 15.下载文件
from selenium import webdriver
import os
fpwebdriver.Firefoxprofile()
fp.set_preference(browser.download.folderList,2)#0是默认路径2是指定路径
fp.set_preference(browser.download.manager.showWhenStarting,False)#是否显示开始
fp.set_preference(browser.download.dir,os.getcwd())#用于指定所下载的文件的目录
fp.set_preference(browser.helperApps.neverAsk.saveToDisk,application/octet-stream)#下载文件的类型
driverwebdriver.Firefox(firefox_profilefp)
driver.get(http://pypi.Python.org/pypi/selenium)
driver.find_element_by_partial_link_text(selenium-2).click() 16.操作Cookie
WebDriver操作cookie的方法
get_cookies(): 获取所有的cookie信息
get_cookie(name): 返回字典的key为“name”的cookie信息
add_cookie(cookie_dict):添加cookie。cookie_dict为字典对象必须有namevalue值
delete_cookie(name,optionsString):删除cookie信息
delete_all_cookies():删除所有的cookie信息 17.调用JavaScipt 调整浏览器滚动条位置
window.scrollTo(左边距上边距) 18.处理HTML5的视频播放
load()play(), pause() 加载播放暂停 19.窗口截图
driver.get_screenshot_as_file(D:\\xxxxx)#截取当前窗口并指定截图图片的保存位置 20.关闭窗口
quit():退出相关程序和关闭所有窗口
close():关闭当前窗口 21.验证码的处理
①去掉验证码
②设置万能验证码
③验证码识别技术
④记录cookie 简单实战
安装chromdriver.
一个简单的自动化测试脚本来体会一下什么是web UI自动化测试以及元素的基本操作
# #文件名称:test_baidu.py
# Function:打开百度网主页在搜索栏输入“helloworldfrom selenium import webdriver
from selenium.webdriver.common.keys import Keys
import timedriver webdriver.Chrome() # 打开Chrome浏览器
driver.get(https://www.baidu.com) # 输入百度网址
print(验证浏览器的基本控制-)def search():print(1、搜索helloworld.并回车......)time.sleep(2)driver.find_element_by_id(kw).send_keys(helloworld) # 输入“helloworld”time.sleep(2)driver.find_element_by_id(kw).send_keys(Keys.ENTER) # 回车进行搜索time.sleep(2)driver.maximize_window() # 最大化当前窗def windows_size():print(2、浏览器窗口大小缩小为640*480......)time.sleep(2)driver.set_window_size(640, 480) # 控制浏览器显示尺寸为640*480time.sleep(0.5)driver.maximize_window() # 最大化当前窗time.sleep(2)def back_refresh():print(3、先进行浏览器后退再次输入csdn进行搜索)driver.back()driver.find_element_by_id(kw).send_keys(csdn) # 输入csdntime.sleep(1)driver.refresh() # 刷新def serach_clear():print(4、清空输入的内容......)driver.find_element_by_id(kw).send_keys(csdn) # 输入csdntime.sleep(2)driver.find_element_by_id(kw).clear()time.sleep(0.5)def csdn():print(5、进入csdn官网)driver.find_element_by_id(kw).send_keys(csdn) # 输入csdntime.sleep(2)driver.find_element_by_id(kw).send_keys(Keys.ENTER) # 回车进行搜索time.sleep(2)driver.find_element_by_xpath(//*[id1]/div/div[1]/h3/a[1]).click()time.sleep(2)windows driver.window_handlesdriver.switch_to.window(windows[-1])now_url driver.current_urlm_get_url https://www.csdn.net/if now_url m_get_url:print(经过判断已经进入csdn官网!!)else:print(未进入到csdn官网请检查代码!)search()
windows_size()
back_refresh()
serach_clear()
csdn()
driver.quit() # 关闭浏览器 问题driver.find_element_by_xpathd的参数是怎么获取到的呢
(//*[id1]/div/div[1]/h3/a[1]).click()
获取路径 Web UI 自动化测试并不是一项简单的任务但通过 Python 强大的生态系统以及不断实践最佳实践测试效率和质量都将显著提升。自动化不仅节省了时间也为开发质量提供了更强有力的保障。 用自动化测试解放双手让代码成为你的“眼睛”精准发现问题助力产品品质跃升新高度