因此,我正在阅读硒测试设计注意事项文档,并且对下面的“UI映射”部分有疑问:
http://seleniumhq.org/docs/06_test_design_considerations.html#ui-mapping
他们建议创建一个属性文件,如下所示:
admin.username = loginForm:tbUsername
admin.loginbutton = loginForm:btnLogin
admin.events.createnewevent = adminHomeForm:_activitynew
admin.events.cancel = addEditEventForm:_IDcancel
admin.events.viewoldevents = adminHomeForm:_activityold
它将html对象映射到关键字
然后他们将像这样使用它:
selenium.type(admin.username, "xxxxxxxx");
但是,从我对属性对象的了解来看,它的工作原理与哈希表非常相似。现在,我正在加载属性文件,如下所示:
http://docs.oracle.com/javase/tutorial/essential/environment/properties.html
在“创建和加载默认属性”部分下
因此,在我需要执行的文档中执行相同的语句:
selenium.type(loadedProps.get(admin.username), "xxxxxxx");
这还不错,只是不如它们的示例那样可读,所以我的问题是如何加载属性文件,以便像它们一样使用关键字。
另外,我正在考虑使用Page Object Design Pattern,所以如果这样做,我是否会定义一个PageObject Base类,该类将
属性文件,然后扩展基础的所有页面对象类都可以访问属性,这听起来合理吗?
最佳答案
在Java中,因为“。”作为操作员具有一定的意义,您无法使其看起来完全像他们的示例(不确定他们在做什么)。您可以执行以下操作:
设置代码:
public class Config {
public static String admin_username;
static {
Properties props = ...;
admin_username = props.getProperty("admin.username");
}
}
使用代码:
import static Config.*;
selenium.type(admin_username, "xxxxxxxx");
如果您真的很疯狂,则可以使用反射来加载Config类(以删除“静态”块中的样板)。