<div class="LIJLHMB-ab-b-com-sencha-gxt-theme-neptune-client-base-field-Css3FieldLabelAppearance-Css3FieldLabelStyles-fieldElement" style="padding-left: 125px;">
<div id="x-auto-93" class="LIJLHMB-M-e-com-sencha-gxt-theme-neptune-client-base-field-Css3TextFieldAppearance-Css3TextFieldStyle-focus" __gwtcellbasedwidgetimpldispatchingfocus="true" __gwtcellbasedwidgetimpldispatchingblur="true" style="width: 275px; height: 32px;">
<div class="LIJLHMB-M-i-com-sencha-gxt-theme-neptune-client-base-field-Css3TextFieldAppearance-Css3TextFieldStyle-wrap" style="width: 275px;">
<input id="x-auto-93-input" class="LIJLHMB-M-h-com-sencha-gxt-theme-neptune-client-base-field-Css3TextFieldAppearance-Css3TextFieldStyle-text LIJLHMB-M-c-com-sencha-gxt-theme-neptune-client-base-field-Css3TextFieldAppearance-Css3TextFieldStyle-field" type="text" style="width: 275px;" value="" tabindex="0"/>
</div>
</div>
</div>
<div class="LIJLHMB-ab-a-com-sencha-gxt-theme-neptune-client-base-field-Css3FieldLabelAppearance-Css3FieldLabelStyles-clearLeft"/>
</div>
</div>
以上是我的代码。给出的id和类是auto id / class,并且每次安装新构建时都会更改。那么在这种情况下如何在进行自动化的同时从DOM中找到输入元素?在此先感谢您的帮助。
答案 0 :(得分:1)
使用@external注释,您可以强制从混淆中排除一些CSS类/ ID,因此它们可供selenium测试使用:
@external legacySelectorA, legacySelectorB; .obfuscated .legacySelectorA { .... } .obfuscated .legacySelectorB { .... }
在上面的示例中,.obfuscated类选择器将是 模糊处理,并且obfuscated()方法将返回替换的名称。 两个遗留选择器都不会被混淆 legacySelectorA()方法将返回未经过混淆的值。 此外,因为legacySelectorB在。中明确定义 @external声明,不可访问的类名不会触发 错误。
答案 1 :(得分:0)
我假设您正在尝试基于GXT 4测试应用程序。
您的问题是,类名称将被混淆,并且ID是通用的。所以两者都不能用于测试。
要使您的应用程序可测试,请将以下行添加到模块描述符中:
<inherits name="com.google.gwt.user.Debug"/>
为您要测试的每个小部件调用ensureDebugId(Element el):
myWidget.ensureDebugId(myWidget.getElement(), "myDebugIdValue");