对Dojo工具包的OpenTest支持

ecbunoof  于 2022-12-20  发布在  Dojo
关注(0)|答案(1)|浏览(159)

我正在尝试使用OpenTest和IBM EGL创建的Web应用程序,使用Dojo工具包。Dojo的问题是它每次都动态生成id,所以它们不能用作定位器。此外,许多元素没有xpath,所以也不能使用。
当我搜索“dojo”和“selenium”时,这似乎是一个常见的问题,但我还没有找到任何解决方案。
其他测试工具对特定的框架有“明确的”支持(比如dojo),所以我认为这在技术上是可行的。

ifsvaxew

ifsvaxew1#

下面是一个网站的摘录,在这个网站上也有人提出了同样的问题,OpenTest支持构建宏,这些宏可以做这个独立的.NET代码所能做的事情。请参考下面的引用以及source
我使用Selenium来测试我的Web应用程序,它是由Dojo/dijit和asp.net MVC构建的,到目前为止它运行良好。
我以前也遇到过同样的问题。我的方法是在编写与dojo小部件交互的步骤时“不要考虑它们”。将它们视为普通的复杂html元素。在dojo解析了小部件之后,您需要在客户端上浏览您的dom树,找到dijit的值节点或交互部分所对应的真实的的dom元素,并对其执行操作(在您的情况下为Click、SendKey或GetId)。
将一些常见的小部件操作 Package 到Helper中也是很好的,这样可以在项目中重用。
下面是一个简单的.NET例子,我用它来测试一个按钮是否存在于一个dGrid中,我只是使用css选择器来查找单元格,希望它能有所帮助:

[Then("I can delete it at row '(.*)'")] 
        public void Then_I_can_delete_it_at_row(int rowIndex) 
        { 
            var nthRow = Browser.FindElementsChecked(By.CssSelector(".dgrid-content .dgrid-row-table")).ElementAt(rowIndex - 1); 
            var deleteBtnsInRow = nthRow.FindElementsChecked(By.XPath(".//span[text() = 'Delete']")); 
            Assert.AreEqual(1, deleteBtnsInRow.Count); 
        }

相关问题