执行'点击'在提交类型的WebButton上

时间:2014-12-18 14:47:58

标签: vbscript automated-tests qtp hp-uft

点击我开发的测试按钮时出现了一些问题,没有引发任何错误,但警告是由于智能识别找到我想要的webButton而不是我的脚本。

这是一个非常简单的路线:

Browser("ControlPoint").Page("Categories").WebButton("CategoryPublish").Click

基本上在测试中它会在实际点击按钮之前保持15秒。在查看测试运行结果时,我可以看到警告,其中指出:找不到对象。

但是,这存在于对象存储库中,如果我调试并使用“应用程序中的突出显示”,它将立即突出显示正确的按钮。

关于这一点,我唯一关注的是它是一个类型提交的webButton,我很确定这在其他测试的其他地方使用,但我目前还没有盯着它已被使用过的地方。其次,在成功单击按钮后,按钮所在区域会出现一个滑块,带有文本输入和新按钮。但是,对此新按钮的单击操作没有问题。

有什么建议吗?有没有办法可以提供其他属性而不是名称或其他属性?

修改 我重新将按钮添加到对象存储库,这个按钮的时间类型不同。我关闭了智能ID并且它在对象存储库中工作,但是在运行测试时,再次出现了相同的问题。

我也试图使用进一步的描述而没有成功,这是我用过的没有改进的东西:

Browser("ControlPoint").Page("Categories").WebButton("name:=CategoryPublish","type:=submit").

以下是按钮的Object属性,原始格式为:

properties

3 个答案:

答案 0 :(得分:1)

这个问题不是关于点击对象,而是查找或识别对象的功能。

此按钮几乎没有问题:
1.在存储库管理器中检查您是否具有唯一的描述属性和正确设置的序号:通常应设置为'类型,值:无' ,或&#39 ;索引:0'
2.尝试通过 Description.Create 动态读取对象,并在调试模式下检查 .count()<返回的 childObjects(objDescription)对象的数量/ em>的。然后你可以在控制台中使用 obj(i).highlight ,或者评估参数,并检查出了什么问题。

但!如果它会突出显示动态收集的对象,并点击仍然无法工作,则在此对象上使用 fireEvent ,或者拖放,或者在点击之前更改重播类型:

Setting.WebPackage("ReplayType") = 2
Setting.WebPackage("ReplayType") = 1

或者,如果您可以按Enter而不是单击,则可以进行简单的解决方法:

Set objShell = CreateObject("Wscript.shell")
objShell.SendKeys "{ENTER}"

答案 1 :(得分:0)

正如其他答复所述,这主要是识别问题。我无法解释为什么事情会像他们那样发生,但我对WebButton类型的怀疑是“提交”#39;有一些理由。

基本上,我再次使用对象间谍来挑选有问题的按钮,这次它们的类型是&#39;按钮&#39;

他们最初是使用对象间谍添加的,所以我不知道他们最终是如何拥有不同的类型,但它确实存在!为确保您已正确添加对象,请务必在调试时将智能识别设置为false,我知道这是我将来会更频繁使用的功能!

修改

以下评论指的是尝试在另一个地方纠正同样的问题并且它不起作用。在这种情况下,我设法找到问题的根源,似乎有人手动将描述属性名称更改为与对象存储库中使用的名称一致。这意味着在这种情况下更改按钮类型后仍然无法找到它。

答案 2 :(得分:-2)

我以前遇到过这个问题,实际上发生了很多。正如阿图尔所说的那样,它就是寻找物体。试试

  

如果浏览器(&#34; ControlPoint&#34;)。页面(&#34;类别&#34;)。WebButton(&#34; CategoryPublish&#34;)。存在(1)然后
    浏览器(&#34;的ControlPoint&#34;)页。(&#34;分类&#34;)WebButton(&#34; CategoryPublish&#34;)。点击
    结束如果

或者你可以将阿图尔的技术与...结合起来

  

设置objShell = CreateObject(&#34; Wscript.shell&#34;)
  如果浏览器(&#34; ControlPoint&#34;)。页面(&#34;类别&#34;)。WebButton(&#34; CategoryPublish&#34;)。存在(1)然后
  objShell.SendKeys&#34; {ENTER}&#34;
  结束如果

这样你就可以保持自己的独特性。如果它仍然有问题找到它。检查控制台日志,查看是否在查找对象本身时遇到问题,并根据需要调整时间。或者使用一个带有递增int的while循环来阻止它以防万一。