C# Ranorex测试自动化问题:无法可靠地单击silverlight web应用程序上的按钮
我们已经使用C# Ranorex测试自动化问题:无法可靠地单击silverlight web应用程序上的按钮,c#,silverlight,ranorex,C#,Silverlight,Ranorex,我们已经使用Ranorex自动化框架为Silverlightweb应用程序自动化了一些测试用例。这些测试用例包括单击按钮以调用屏幕上的某些消息。为了抓取屏幕上的按钮,我们首先创建一个Ranorex button对象,然后使用Ranorexpath将其指向适当的元素。然后,我们使用RanorexButton.Click()事件来单击按钮。但是,此事件不可靠。它有时工作,有时不点击按钮。当没有点击按钮时,我们必须从头开始再次运行测试用例。我们做错了什么?如果这是ranorex的已知问题,请建议解决方
Ranorex自动化框架
为Silverlight
web应用程序自动化了一些测试用例。这些测试用例包括单击按钮以调用屏幕上的某些消息。为了抓取屏幕上的按钮,我们首先创建一个Ranorex button对象,然后使用Ranorexpath
将其指向适当的元素。然后,我们使用RanorexButton.Click()
事件来单击按钮。但是,此事件不可靠。它有时工作,有时不点击按钮。当没有点击按钮时,我们必须从头开始再次运行测试用例。我们做错了什么?如果这是ranorex的已知问题,请建议解决方法。我还没有听说ranorex有这样的问题,可能这只是时间问题。
您可以在单击之前添加一个Validate.Exists(yourButton)
,这样可以确保在成功加载按钮后执行单击。
如果是WebElement,也可以使用PerformClick()
方法,而不是普通的Click()方法。
还有不同的方法可以确保按钮位于可见区域并具有焦点,如ensureavibilible()
或focus()
方法。
您可以在Ranorex的在线API中找到所用适配器的可用方法。我也遇到了同样的问题,但我能够通过在单击之前引入Validate.Exists(infoObject)来解决问题。请确保传递按钮的infoObject或Validate.Exists API中的任何元素 例如:
Validate.Exists(repo.MyApp.LoginBtnInfo);
var button = repo.MyApp.LoginBtn;
button.Click();
关于,,
Avinash Nigam如果按钮不在无需滚动即可看到的区域内,则可以使用
var button = repo.Buttons.button1;
button.EnsureVisible();
button.Click();
通过这种方式,按钮被强制监视。这可能是xpath和元素Id-s的问题 如果即使页面被导航离开并向后移动(例如,SAP相关组件存在此问题),也会更改元素Id-s,则可能需要使用正则表达式生成更健壮的xPath路径变量 尝试查找未更改的对象和路径部分(例如“iFrame id=“MainContent”或“btn id=“id\u XXXX\u Search\u Button”)—当然,这仅在问题在此范围内时才有帮助 Ranorex正则表达式信息可在此处找到: 我所说的一个简单例子: 假设我们有一个输入字段,它的名称中有一个不断变化的ID:
US_EL.ID_F2B49DB60EE1B68131BD662A21B3432B:V_MAIN._046A-r
我知道Id中不变的部分是:
:V_MAIN._046A-r
我可以创建一个路径,通过使用正则表达式搜索元素的id的结尾来搜索元素:
/dom[@domain='test.example.com']//iframe[#'identifier']//iframe[#'identifier2']//input[@id**~'^**:V_MAIN._046A-r']
粗体部分将指定搜索Id以“:V_MAIN._046A-r”结尾的输入元素
由此产生的一个问题是,如果您的元素使用部分相同的名称,则可能会返回多个相同路径的元素。因此,当这个问题出现时,明智的做法是在路径中添加一些特定的点(例如“iframe[#'identifier2'])。是的,我们正在使用Focus()
方法,但这个问题仍然会发生。。。。我们还尝试了至少多次使用click()
事件。另一个解决方法是一直单击按钮直到它可见。。。。当然,如果按钮未加载其他页面或在单击事件后仍然存在,则不能使用此按钮。