根据控件的名称值属性创建单击事件

时间:2013-04-24 12:50:55

标签: controls screen testcomplete

我正在使用TestComplete来实现QA流程的自动化。

TestComplete会根据屏幕上鼠标的位置检测点击事件。但是当我在另一台机器(更大/更小的屏幕)上运行相同的测试时,鼠标按钮不会点击正确的位置。

因此我想知道是否有一种方法可以根据其名称(即按钮的名称)搜索控件,然后运行脚本来点击该特定的单词(或位置)。

感谢任何帮助:)

其他详细信息

这是TestComplete为点击网页上的搜索按钮而生成的示例脚本。

Sub Test6()
  'Opens the specified URL in a running instance of the specified browser.
  Call Browsers.Item(btIExplorer).Navigate("http://www.simplyrecipes.com/search/?cx=003084314295129404805%3Ai2-mkfc4cai&cof=FORID%3A11&q=&sa.x=48&sa.y=16")
  'Clicks at point (173, 10) of the 'textboxQ' object.
  Call Aliases.browser.pageHttpWwwSimplyrecipesComSearc.panelPage.headerMasthead.group.panelSiteSearch.formSearchbox0030843142951294048.textboxQ.Click(173, 10)
  'Sets the text 'asd' in the 'textboxQ' text editor.
  Call Aliases.browser.pageHttpWwwSimplyrecipesComSearc.panelPage.headerMasthead.group.panelSiteSearch.formSearchbox0030843142951294048.textboxQ.SetText("asd")
  'Clicks at point (57, 12) of the 'imagebuttonSa' object.
  Call Aliases.browser.pageHttpWwwSimplyrecipesComSearc.panelPage.headerMasthead.group.panelSiteSearch.formSearchbox0030843142951294048.imagebuttonSa.Click(57, 12)
End Sub 

以下是在RecordTest窗口中捕获的按钮单击事件

enter image description here

我想知道的是,有没有办法可以指定控件名称(即'Search'或'imagebuttonSa'),因此TestComplete将在给定的GUI中搜索名称然后一旦它找到后,点击上的点击事件。

我使用的是Windows 7 64位操作系统,TestComplete 9试用版和VBScript作为脚本语言。

4 个答案:

答案 0 :(得分:1)

据我所知,TestComplete已经适用于特定控件/对象的情况: textboxQ imagebuttonSa 。这两个名称通过Name Mapping功能提供给对象,您可以随意更改它们。

对于坐标,这些坐标与相应控件的左上角相关( textboxQ imagebuttonSa )。如果需要,可以从动作参数中删除坐标(例如.. .imagebuttonSa.Click()),TestComplete将单击控件的中心点。

如果您在回放测试时遇到任何问题而无法找出导致这些问题的原因,那么最好的选择是contacting SmartBear支持团队,详细说明会发生什么。向他们发送包含失败结果日志的项目。

答案 1 :(得分:1)

Whenever I have a problem with not finding an object with TC I use one of this functions or a combination of them.

In case you have the table object (parent of the cell you want to click):
function clickCellByText(text,tablePath)
{   
  var table = tablePath;
  if (!table.Exists)
  {
    Log.Error("A table with the following text cannot be found: " + table);
  }
  clickCell1(table, "*Cell*", "*Cell*");

  function clickCell1(table, idText, linkText)
  {
    var propArray = new Array("innerText", "ObjectType");
    var valArray = new Array(text,"Cell*");
    var idCell = table.FindChild(propArray, valArray, 20000);
    if (idCell.Exists)
    { 
      // Row found, find the link in the same row      
      idCell.Click(); 
    }
    else  
    {
      Log.Error("A cell with the following text cannot be found: " + text);
    }
  }
}

If you want to find the object or the parent of the object by any property:

function clickComponent(property,text)
{ 
   // Using the Find method 
   var myObj = Sys.Browser("iexplore").Page("*").NativeWebObject.Find(property,text);
   // Checks if the button exists 
   if (myObj.Exists)
   { 
      myObj.Click();     
   }
   else
     Log.Error("Can't find the object","");
}

答案 2 :(得分:1)

如果未指定坐标,则会单击对象的中心。

答案 3 :(得分:0)

一旦FindChild找到具有上述指定属性的按钮,您可以尝试使用按钮所在的FindChild或Find with Object Name Mapping,使用属性(例如:ObjectType为按钮和按钮标题以及所需的按钮标题)可以使用该对象点击它:

var button = ParentObj.FindChild(["ObjectType","Caption"],["Button","OK"],10); if(button.Exists) button.Click()