Selenium webdriver 当没有给出唯一的定位器时,如何在GWT应用程序中查找元素?

Selenium webdriver 当没有给出唯一的定位器时,如何在GWT应用程序中查找元素?,selenium-webdriver,gwt,Selenium Webdriver,Gwt,上面是我的代码。给出的id和类是自动id/类,每次安装新版本时都会更改。那么在这种情况下,如何在执行自动化时从DOM中查找输入元素呢?提前感谢您的帮助。通过注释,您可以强制将某些CSS类/ID从混淆中排除,以便通过selenium测试使用它们: 在上面的示例中,将使用.obfuscated类选择器 obfuscated,并且obfuscated()方法将返回替换的名称。 这两个旧选择器都不会混淆,并且 legacySelectorA()方法将返回未模糊的值。 此外,由于legacySelecto

上面是我的代码。给出的id和类是自动id/类,每次安装新版本时都会更改。那么在这种情况下,如何在执行自动化时从DOM中查找输入元素呢?提前感谢您的帮助。

通过注释,您可以强制将某些CSS类/ID从混淆中排除,以便通过selenium测试使用它们:

在上面的示例中,将使用.obfuscated类选择器 obfuscated,并且obfuscated()方法将返回替换的名称。 这两个旧选择器都不会混淆,并且 legacySelectorA()方法将返回未模糊的值。 此外,由于legacySelectorB是在 @外部声明,不可访问的类名将不会触发 错误


我假设您正在尝试测试基于GXT 4的应用程序

您的问题是,类名将被混淆,id是泛型的。因此,两者都不能用于测试

要使应用程序可测试,请在模块描述符中添加以下行:

@external legacySelectorA, legacySelectorB;
.obfuscated .legacySelectorA { .... }
.obfuscated .legacySelectorB { .... }
@external legacySelectorA, legacySelectorB;
.obfuscated .legacySelectorA { .... }
.obfuscated .legacySelectorB { .... }
<inherits name="com.google.gwt.user.Debug"/>
myWidget.ensureDebugId(myWidget.getElement(), "myDebugIdValue");