6

我们使用提供的 GWTSimplePager通过数据集提供记录/页面导航。我们想测试我们是否正确控制了 Next/Previous 按钮的启用状态。虽然 SimplePager 允许我们为按钮指定启用/禁用的图像,但“按钮”本身是一个内部类,ImageButton它扩展Image而不是 Button。因此,生成的 HTML 不使用 Button 启用/禁用属性,而是为每个状态提供不同的嵌入图像。

是否有任何合理的方法来检测 Selenium 中的 SimplePager 导航按钮启用状态?

4

3 回答 3

0

查看 SimplePager 的源代码,看起来他们使用生成器来创建 css 样式,其中禁用状态(和启用状态)应用了一个 css 类(我离开了这个https://code.google .com/p/google-web-toolkit/source/browse/trunk/user/src/com/google/gwt/user/cellview/client/SimplePager.java?r=9614)。

因此,如果您能够以某种方式访问​​实际的Resources客户端捆绑包,那么您可以调用resources.simplePagerStyle().disabledButton()以获取一个字符串,该字符串是禁用按钮的 css 类,然后您可以将其用作 selenium 中的定位器。这可能真的很棘手,因为运行您的 selenium 测试的 jvm 可能无法引用已编译的 GWT 代码(即,当您调试 GWT 应用程序时运行的代码)。

或者,您可以子类SimplePager化,而不是使用DEFAULT_RESOURCES客户端包,传入您自己的,然后您可以控制用于禁用按钮的类名(通过创建您自己的Style类,它只是包装您从原始客户端获得的现有类捆绑,但在返回值中添加前缀或其他内容)。

这有点乱,因为组件被完全封装了,你正试图了解它的内部。

于 2014-11-13T10:29:06.980 回答
0

在标准实践中,您应该创建自定义组件,比如说图像按钮。我建议您使用ISFW,它提供了创建可与注释一起使用的自定义组件的功能。在组件中,您可以根据 AUT 指定行为。

于 2013-02-12T14:59:48.003 回答
0

重新编写代码示例以获得更好的格式。

public class ImageButton extends Component{
   public ImageButtom (String loc){
    super(locator);
   } 

   @Override
   public boolean isEnabled() {
    //custom representation!...
    return this.getAttribute("class").contains("imgdisabled");
    //return this.getCssValue("background").contains("imgdisabled");
    //return this.getAttribute("src").contains("imgdisabled");
   }
}

您可以在测试页面中使用此组件,例如 Webelement

@FindBy(locator="locator")
ImageButton prevButton;

@FindBy(locator="locator")
ImageButton nextButton;

在您的测试代码中

page.prevButton.verifyEnabled();
page.prevButton.assertEnabled();
于 2013-04-01T12:06:30.823 回答