dojo - 对 Dojo 工具包的 OpenTest 支持
问题描述
我正在尝试将 OpenTest 与使用 Dojo 工具包通过 IBM EGL 创建的 Web 应用程序一起使用。dojo 的问题在于它每次都会动态生成 id,因此它们不能用作定位器。此外,许多元素没有 xpath,因此也无法使用。
当我搜索“dojo”和“selenium”时,这似乎是一个常见问题,但我还没有找到任何解决方案。
其他测试工具对特定框架(例如 dojo)有“明确”支持,所以我认为它在技术上是可行的。
解决方案
这是一个网站的摘录,其中提出了同样的问题,OpenTest 支持构建宏,这些宏正是这个人能够用 .NET 代码做的事情。请参考下面的块引用以及来源
我使用 Selenium 测试由 dojo/dijit 和 asp.net MVC 构建的 Web 应用程序,到目前为止它运行良好。
我以前也遇到过和你一样的问题。在编写与它们交互的步骤时,我的方式是“不要考虑 dojo 小部件”。将它们视为普通的复杂 html 元素。在dojo解析你的widget之后,你需要在客户端浏览你的dom树,找到dijit的值节点或交互部分对应的真实dom元素并对其进行操作(在你的情况下为Click、SendKey或GetId)。
将小部件的一些常用操作包装到可以在项目中重用的 Helpers 中也是很好的。
下面是一个简单的 .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);
}
推荐阅读
- ios - 未处理的异常:Foundation.MonoTouchException:
发生了 - makefile - Makefile 运行命令行程序
- android - 像素 2 手机上 802.11 无线网卡的 SDIO 总线和省电模式超时
- ios - 应用在 iOS 中播放本地音频后,Webview HTML5 视频停止
- java - WebDriverException:未知错误:无法将窗口状态更改为最大化,当前状态在 MAC OS X 上的 Chrome 70 和 Chromedriver 2.43 上是正常的
- javascript - 开玩笑地模拟 localStorage 方法
- ruby - open_timeout 和 read_timeout 不起作用
- python - 如何使用 CCDT 文件、用户 ID 和密码在 Python 中连接到 IBM MQ
- c# - 为什么这个从 C# 代码中提取的 Git 不起作用
- javascript - jQuery AJAX 调用获取 HTML 响应