我们知道,像DOM,Html,CSS,XPath等对对象的识别策略广泛运用于一些开源的工具,例如:Selenium,Watir,Watir-Webdriver,以前qtp版本是不支持这些东西的,现在qtp11对这些已经支持了,下面我们就看看这些特性:
Document Object Model(DOM):这东西干嘛的 ,百度之。
像下面的这些方法能应用在qtp中:
方法 |
描述 |
getElementById |
使用已知的元素id,返回第一个页面元素 |
getElementsByName |
返回具有指定名称的一个JavaScript数组中的所有元素 |
getElementsByTagName |
返回与指定的标记名的JavaScript数组的所有元素 |
在qtp里调用JavaScript 方法:
Object.RunScript(script)
例如:
Browser("title:=百度一下,你就知道").Page("title:=百度一下,你就知道").RunScript ("alert('hello');")
Using HTML DOM Methods & Properties in QTP:
要访问HTML DOM方法,我们需要使用的文档对象,我们可以使用getElementById这个方法,用他的id来获取页面元素。例如:
Set kws=Browser("title:=百度一下,你就知道").Page("title:=百度一下,你就知道").RunScript ("document.getElementById('kw');")
kws.value ="百度一下"
Set us=Browser("title:=百度一下,你就知道").Page("title:=百度一下,你就知道").RunScript ("document.getElementById('su');")
us.click
但是我们对于一些页面没有定义id的但是定义了名称,我们就可以使用getElementsByName这个方法来解决,例如:
Set kws=Browser("title:=百度一下,你就知道").Page("title:=百度一下,你就知道").RunScript ("document.getElementsByName('wd')(0);")
kws.value ="百度一下"
而这里使用getElementsByName注意需要索引值,因为他是返回一个JavaScript数组。
如果使用getElementsByTagName,我们就不需要name或者id了。例如:
Set kws=Browser("title:=百度一下,你就知道").Page("title:=百度一下,你就知道").RunScript ("document.getElementsByTagName('input')(0);")
kws.value ="百度一下"
这里不好的地方就是,当有多个的时候,它的index属性无法直接写出并且当index改变了,脚本也要改变。
通常情况下,我们都是使用组合键来识别相应的元素对象,例如:
set wd=Browser("name:=.* - 六间房秀场.*").Page("title:=.* - 六间房秀场.*").RunScript ("document.getElementById('chatForm').getElementsByTagName('input')(2) ;")
wd.value ="testing"
与此同时,我们也可以使用元素之间的关系来识别一些元素,例如:
document.getElementById(‘XXX’).firstChild |
通过使用getElementById返回第一个子元素 |
document.getElementById(‘XXX’).lastChild |
通过使用getElementById返回最后一个子元素 |
document.getElementById(‘XXX’).parentNode |
通过使用getElementById返回父节点 |
document.getElementById(‘XXX’). nextSibling |
通过使用getElementById返回下一个兄弟元素 |
document.getElementById(‘XXX’). previousSibling |
通过使用getElementById返回前一个兄弟元素 |
使用XPath:
在QTP11中,XPath是另一种重要的识别元素的方式,当然它也像其它工具一样被广泛的应用于开源工具中,下面就介绍下载qtp11中改方式的特性。
XPath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。
XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。起初 XPath 的提出的初衷是将其作为一个通用的、介于XPointer与XSL间的语法模型。但是 XPath 很快的被开发者采用来当作小型查询语言。(详细的介绍看这里:http://zh.wikipedia.org/wiki/XPath)
QTP提供了两种使用XPath的方式,一种是在tools-àoptions—>Webàadvanced中;另一种就是你自己通过编程使用XPath的方法和属性。
这里主要介绍第二种:
下面就看一个采用描述性编程来使用XPath的方法的例子:
Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").WebEdit("xpath:=//input").Set "testing"
在这个例子中,我们使用的是//input,”//”在xpath中表示贪婪查询,他会变量html中所有的元素,直到找到为止。
同时如果我们知道元素的确定位置,我们也可以利用绝对路径来定位,如:
Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").WebEdit("xpath:=/html/body/div[2]/div/form/input").Set "testing"
这里比较麻烦的是,这个绝对路径,我们可以通过火狐来查看同时采用这个定位是非常快的,不过元素如果改变了,就悲催了~~~,未完待续~~~
下面来介绍,在xpath中使用元素属性来定位元素:
常用的元素属性有,ID,name,index,value,type 等,在xpath中,我们可以这样使用:
Xpath:=//element[@attribute=’ attribute value’]
例如:
Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").WebEdit("xpath:=//input[@id='kw']").set "testing"
当然,我们也可以使用多个属性来定位元素,如:
Xpath:=//element[@attribute=’ attribute value’ and @attribute=’ attribute value’ ]
Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").WebEdit("xpath:=//input[@id='kw' and @type='text' ] ").set "testing"
在一些使用AJAX构建的网站,通常他们的元素属性是动态的,例如ids,name,他们随着网页动态加载变化而变化,此时我们可以使用部分匹配的原则来定位这些元素。
在xpath中,提供了一些常见的函数,例如:cotains(),start-with(),end-with(),语法如下:
//element[start-with(@attribute,’attribute partial value’)]
// element[end-with(@attribute,’attribute partial value’)]
//element[cotains(@attribute,’attribute partial value’)]
例如下面的例子:
<div id='login_area'>
<input type='text' id='text_1'>
</div>
我们可以这样定位元素:
Browser("name:=XXX").Page("title:=XXX").WebEdit("xpath:=//div[@id=' login_area '/input[start-with(@id,’text_’)]' ] ").set "testing"
同理,其它方法也是这样用。
在这里有一种方法,直接使用text()来定位元素,这个是很方便的。语法如下:
//element[text()='inner text']
例如:
Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").link("xpath:=//a[text()='注册']").Click
当然我们也可以结合contains(),start-with()来使用。
语法如下:
//element[contains(text(),’inner text’)]
例如:
ss=Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").link("xpath:=//a[contains(text(),'注')]").GetROProperty("name")
msgbox ss ‘ss=注册
在qtp11中还介绍了关于xpath轴的知识,这部分没找到相关例子,就不介绍了,感兴趣的去看下w3school上关于xpath轴的介绍。
CSS在QTP11中使用:
QTP11中也增加了CSS来识别页面对象属性,关于css的介绍以及使用可以看w3school。
在qtp11中使用css的语法如下:
Css:=Element.class_attribute
例如:
Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").WebEdit("css:=input.s_ipt ").set "testing"
在dom,xpath中均能使用id,在css中也可以使用id。在css中使用id的语法如下:
Css:=element#id
例如:
Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").WebEdit("css:=input#kw ").set "testing"
当然,在css中我们也可以使用元素的属性来识别页面对象,其语法如下:
Css:=element[attribute=value]
例如:
Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").WebEdit("css:=input[name=wd] ").set "testing"
另外,css中也提供了类似xpath中的部分识别属性的方法,具体方法如下:
Operator |
Description |
^=attribute_value |
找到以给定的属性值的开始的元素,这个和xpath中的 starts-with()函数相似。 |
*= attribute_value |
找到包含给定属性值的元素. 这个和xpath中的 contains()函数相似。 |
$= attribute_value |
找到以给定的属性值的结束的元素. 这个和xpath中的 ends-with()函数相似。 |
例如:
<div id='login_area'>
<input type='text' name='text_1'>
</div>
Browser(title:=XXX).Page(title:=xxx).WebEdit(“css:=div#login_area input[name^=’text_’]”).set “testing”
或者
Browser(title:=XXX).Page(title:=xxx).WebEdit(“css:=div#login_area input[name*=’text_’]”).set “testing”
在css中,也可以使用text()来定位,具体语法如下:
Css:=element:contains(‘text’)
Browser("name:=百度一下,你就知道").Page("title:=百度一下,你就知道").link("css:=a:contains('注册')").Click
相关推荐
解决这个问题的方法有多种,包括使用 QTP、Xpath 或者 CSS 等。但是,在这个例子中,作者选择了使用 AutoIT 的 MouseMove 方法和 fireEvent 方法来实现自动化测试。 方案一是使用 AutoIT 的 MouseMove 方法在图表上...
这得益于使用了一个轻量级的测试框架,它负责底层的对象识别和交互。例如,使用`$Sub_Page.Op("图表 "," 获取这个对象 ","")`这样的语法可以方便地操作页面元素。 总的来说,通过深入分析页面结构,理解JavaScript...
- **对象定位策略**:通过XPath、CSS选择器和DOM来定位网页元素,这是编写有效测试脚本的基础。 ### Selenium扩展 - **Selenium插件和User Extension**:这些扩展可以增强Selenium的功能,以满足特定测试需求。 - ...
在学习Selenium时,新手需要掌握的基本知识点包括理解Selenium的原理和架构、熟悉浏览器的开发者工具以及网页元素的定位方法,例如通过ID、名称、类名、CSS选择器或XPath。除此之外,对于测试人员来说,了解如何组织...
"基于Comsol的采空区阴燃现象研究:速度、氧气浓度、瓦斯浓度与温度分布的二维模型分析",comsol采空区阴燃。 速度,氧气浓度,瓦斯浓度及温度分布。 二维模型。 ,comsol; 采空区; 阴燃; 速度; 氧气浓度; 瓦斯浓度; 温度分布; 二维模型;,"COMSOL模拟采空区阴燃:速度、浓度与温度分布的二维模型研究"
安全驱动的边云数据协同策略研究.pdf
MATLAB代码实现电-气-热综合能源系统耦合优化调度模型:精细电网、气网与热网协同优化,保姆级注释参考文档详可查阅。,MATLAB代码:电-气-热综合能源系统耦合优化调度 关键词:综合能源系统 优化调度 电气热耦合 参考文档:自编文档,非常细致详细,可联系我查阅 仿真平台:MATLAB YALMIP+cplex gurobi 主要内容:代码主要做的是一个考虑电网、热网以及气网耦合调度的综合能源系统优化调度模型,考虑了电网与气网,电网与热网的耦合,算例系统中,电网部分为10机39节点的综合能源系统,气网部分为比利时20节点的配气网络,潮流部分电网是用了直流潮流,气网部分也进行了线性化的操作处理,代码质量非常高,保姆级的注释以及人性化的模块子程序,所有数据均有可靠来源 ,关键词:MATLAB代码; 电-气-热综合能源系统; 耦合优化调度; 电网; 热网; 气网; 潮流; 直流潮流; 线性化处理; 保姆级注释; 人性化模块子程序; 可靠数据来源。,MATLAB代码:电-气-热综合能源系统耦合优化调度模型(保姆级注释,数据来源可靠)
内容概要:本文详细探讨了人工智能(AI)对就业市场的深远影响及其发展趋势。首先介绍了到2027年,44%的工人核心技能将受技术变革尤其是AI影响的事实,并提及自动化可能取代部分工作的现象。其次指出虽然某些职位面临风险,但也带来了全新的职业机遇与现有角色改进的可能性,关键在于人类要学会借助AI释放自身潜力并培养软实力,以适应快速发展的科技需求。再者,强调终身学习理念下企业和教育培训须革新教学手段与评估机制,以便紧跟AI进化速率,为个体和社会持续注入新动力。最后提到了教育机构应当加快调整步伐以匹配技术变革的速度,并利用AI实现个性化的教育,进而提升学习者的适应能力和解决问题的能力。 适用人群:政策制定者、企业管理层、在职人员及教育工作者,还有广大学生群体均能从中获得启示。 使用场景及目标:面向关注未来职场动向及教育发展方向的专业人士,提供前瞻性思考角度,助力各界积极规划职业生涯路径或调整教育资源分配策略。 其他说明:本文综合多位行业领袖的观点展开讨论,旨在唤起社会各界共同思考AI带来的变革及对策,而非单方面渲染危机感。
2025最新空调与制冷作业考试题及答案.doc
2025最新初级电工证考试题及答案.docx
飞剪PLC控制系统——采用西门子S7-200SMART和触摸屏实现智能化操控及图纸详述,飞锯追剪程序,PLC和触摸屏采用西门子200smart,包含图纸,触摸屏程序和PLC程序。 ,核心关键词:飞锯追剪程序; 西门子200smart; PLC程序; 触摸屏程序; 图纸; 控制系统。,"西门子200smart飞锯追剪系统程序包:含图纸、PLC与触摸屏程序"
使用PyQt6制作的Python应用程序。
三相桥式整流电路双闭环控制策略:电压外环与电流内环协同优化研究,三相桥式整流电路双闭环控制 电流内环 电压外环(也有开环控制) 采用电压电流双闭环控制,在电压、电流控制电路中,电压单环控制易于设计和分析,但是响应速度慢,无限流功能。 而电流环能增强电路稳定性、响应速度快。 三相桥式全控整流电路由整流变压器、阴极相连接的晶闸管(VT1, VT3, VT5)、阳极相连接的晶闸管(VT4, VT6, VT2)、负载、触发器和同步环节组成(如图1),6个晶闸管依次相隔60°触发,将电源交流电整流为直流电。 matlab仿真模型(开闭环都有)控制效果良好,可写报告。 ,三相桥式整流电路;双闭环控制;电流内环;电压外环;开环控制;MATLAB仿真模型。,基于双闭环控制的电压电流三相整流技术分析与Matlab仿真实现
MATLAB四旋翼仿真PID控制:从入门到精通的手把手教学,含QAV方法、模型代码、Simulink布局思路及详细图文说明,MATLAB四旋翼仿真 PID控制,有完全对应的说明文档,专门为初级学习者提供。 不用问在不在,直接拿即可。 亮点: 拥有和模型完全对应的讲解文档,相当于手把手教学。 内容包括: 1.QAV详细方法 2.模型及代码 3.模型2(提供simulink排版布局思路) 4.相关图片 5.使用备注 ,核心关键词:MATLAB四旋翼仿真; PID控制; 完全对应说明文档; 初级学习者; QAV详细方法; 模型及代码; simulink排版布局思路; 相关图片; 使用备注。,"MATLAB四旋翼仿真教程:PID控制详解与手把手教学"
定子磁链控制下的直接转矩控制系统MATLAB仿真研究及结果分析报告,基于定子磁链控制的直接转矩控制系统 MATLAB SIMULINK仿真模型(2018b)及说明报告,仿真结果良好。 报告第一部分讨论异步电动机的理论基础和数学模型,第二部分介绍直接转矩控制的具体原理,第三部分对调速系统中所用到的脉宽调制技术CFPWM、SVPWM进行了介绍,第四部分介绍了MATLAB仿真模型的搭建过程,第五部分对仿真结果进行了展示及讨论。 ,关键词:定子磁链控制;直接转矩控制系统;MATLAB SIMULINK仿真模型;异步电动机理论基础;数学模型;直接转矩控制原理;脉宽调制技术CFPWM;SVPWM;仿真结果。,基于MATLAB的异步电机直接转矩控制仿真研究报告
2025中小学教师编制考试教育理论基础知识必刷题库及答案.pptx
Python游戏编程源码-糖果消消消.zip
三相PWM整流器双闭环控制:电压外环电流内环的SVPWM调制策略及其代码编写详解——动态稳态特性优越的技术参考。,三相PWM整流器双闭环控制,电压外环,电流内环,PLL。 采用SVPWM调制,代码编写。 动态和稳态特性较好,可提供参考资料 ,三相PWM整流器;双闭环控制;电压外环;电流内环;PLL调制;SVPWM调制;动态特性;稳态特性;参考资料,三相PWM整流器双闭环SVPWM调制策略:稳态与动态特性优化参考指南
永磁同步电机滑膜观测器参数识别与仿真研究:转动惯量、阻尼系数及负载转矩的Matlab Simulink仿真分析文章及文档说明,永磁同步电机 滑膜观测器参数识别Matlab simulink仿真 包括转动惯量 阻尼系数 负载转矩 波形很好 跟踪很稳 包含仿真文件说明文档以及文章 ,关键词:永磁同步电机;滑膜观测器;参数识别;Matlab simulink仿真;转动惯量;阻尼系数;负载转矩;波形质量;跟踪稳定性;仿真文件;说明文档;文章。,基于Matlab Simulink仿真的永磁同步电机滑膜观测器参数识别及性能分析
基于永磁涡流的电梯缓冲结构设计.pdf