【发布时间】:2015-04-23 13:15:46
【问题描述】:
据我所知,有两种方法可以在 GWT 中设置 Web 元素的 ID。我需要执行 Selenium 自动化测试,并希望深入了解每种技术的相对优势。
选项 1:普遍接受的方法
uiObject.ensureDebugId("idForMyElement");
此解决方案有据可查,并得到 google 的官方支持。但是它也有一些缺点:
我的团队必须像这样在每个包的 gwt.xml 文件中添加行:
<inherits name='com.google.gwt.user.Debug' />
此外,Debug 类默认将“gwt-debug”添加到 ID。我意识到我可以改变这种行为,但我不喜欢在我可以帮助的地方增加复杂性。
选项 2:使用通用 setAttribute 调用
uiObject.getElement().setAttribute("id", "idForMyElement);
这对我来说似乎更干净 - 有什么我可能忽略的缺点吗?
相关资源: How can I set id for GWT widgets in UiBinder? https://code.google.com/p/google-web-toolkit/issues/detail?id=4176
【问题讨论】:
-
你想用这些 id 做什么?此外,继承刚刚添加到您的 .gwt.xml
-
@user2248239 使用 Selenium 进行自动化测试
-
好吧,我猜一个通用的 setAttribute 调用会做同样的事情,但我没有看到这么大的优势,除了你不必每次都添加 gwt-debug。即使您采用 setAttribute 方法,您也必须准备好 gui 元素。无论如何,调试前缀也可以只用一行代码删除。所以在复杂性上并没有那么大的差异。
-
仅供参考:这是一个小类,可帮助您使用 WebDriver 通过调试 id 查找元素:github.com/ArcBees/ArcBees-Common/blob/master/testutils/src/…
-
谢谢大家。 @user2248239 我在其他地方看到了一个答案,建议我必须编写自己的替换类,但是单行没什么大不了的。