我们使用提供的SimplePager
GWT来提供数据集的记录/页面导航。我们想要测试我们正确控制Next / Previous按钮的启用状态。虽然SimplePager允许我们为按钮指定启用/禁用图像,但“按钮”本身是ImageButton
的内部类,它扩展Image
而不是Button。因此,生成的HTML不使用Button启用/禁用属性,而是为每个状态提供不同的嵌入图像。
有没有合理的方法来检测Selenium中的SimplePager导航按钮启用状态?
答案 0 :(得分:0)
在标准练习中,你应该创建自定义组件,比如说Image按钮。我建议你使用ISFW,它提供可以与注释一起使用的creating custom component功能。在组件中,您可以按AUT指定行为。
答案 1 :(得分: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();
答案 2 :(得分:0)
查看SimplePager的源代码,看起来他们使用生成器来创建css样式,其中禁用状态(和启用状态)已应用了css类(即时通讯{{3} })。
因此,如果你能以某种方式访问实际的Resources
客户端包,那么你可以调用resources.simplePagerStyle().disabledButton()
来获取一个字符串,该字符串是禁用按钮的css类,然后你可以使用它作为硒的定位器。这可能是非常棘手的,因为运行selenium测试的jvm可能无法引用已编译的GWT代码(即,在调试GWT应用程序时运行的代码)。
或者,你可以继承SimplePager
,而不是使用DEFAULT_RESOURCES
客户端包,传递你自己的,然后你可以控制用于禁用按钮的类名(通过制作你自己的{ {1}}类,它只包装您从原始客户端包中获得的现有类,但在返回值中添加前缀或其他内容)。
它有点乱,因为组件是完全封装的,而你正试图弄清楚其内部。