我们使用Ranorex automation framework
为Silverlight
网络应用程序自动化了一些测试用例。这些测试用例涉及单击按钮以调用屏幕上的某些消息。为了抓住屏幕上的按钮,我们首先创建一个Ranorex按钮对象,然后使用Ranorexpath
将其指向相应的元素。然后,我们使用RanorexButton.Click()
事件单击按钮。但是,这个事件是不可靠的。它有时有效,有时则不点击按钮。如果未单击该按钮,则必须从头开始再次运行测试用例。我们做错了什么?如果这是一个已知的ranorex问题,请建议解决方法。
答案 0 :(得分:2)
我遇到了同样的问题,但我能够通过在点击之前引入Validate.Exists(infoObject)来解决问题。请确保您传递按钮的infoObject或Validate.Exists API中的任何元素。
示例:
Validate.Exists(repo.MyApp.LoginBtnInfo);
var button = repo.MyApp.LoginBtn;
button.Click();
关于, Avinash Nigam
答案 1 :(得分:1)
我还没有听说过Ranorex这样的问题,也许这只是一个时间问题。
您可以在单击之前添加Validate.Exists(yourButton)
,这可确保在成功加载按钮后执行单击。
如果它是WebElement,您还可以使用PerformClick()
方法而不是普通的Click()方法。
还有一些不同的方法可以确保按钮位于可见区域并具有焦点,如EnsureVisible()
或Focus()
方法。
您可以在Ranorex的在线API中找到所用适配器的可用方法。
答案 2 :(得分:1)
如果按钮不在您无法滚动的区域内,您可以使用
var button = repo.Buttons.button1;
button.EnsureVisible();
button.Click();
这样就强制观看按钮。
答案 3 :(得分:1)
它可能是xpath和元素Id-s的问题。
如果您更改了元素Id-s,即使页面被导航离开并移回(例如我们在SAP相关组件中存在此问题),您可能需要使用正则表达式创建更强大的xPath路径变量。 / p>
尝试找到不会改变的路径的对象和部分(例如," iFrame id =" MainContent""或" btn id =" ID_XXXX_Search_Button"") - 当然,只有在问题出现时才会有所帮助。
Ranorex正则表达式信息可在此处找到:http://www.ranorex.com/support/user-guide-20/ranorexpath.html#c3294
我正在谈论的一个简单例子:
我们假设我们有一个输入字段,其中包含更改ID的名称:
US_EL.ID_F2B49DB60EE1B68131BD662A21B3432B:V_MAIN._046A-r
我知道身份证中不会改变的部分是:
: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']")是明智之举。