@FindBy 注解
由于Selenium
框架采用PageObject
设计模式,因而提供提供了不少很方便的注解来达到目的,其中有一个注解就是@FindBy
。在使用中,只要通过在field
中使用注解,则可以将不同属性的元素对象转换成一个WebElement
对象。
@FindBy(name='id')
public WebElement idTab;
通过指定name
属性,可以将idTab转换成当前页面的一个WenElement
对象。
从selenium源码中看@FindBy实现:
public @interface xxx 来定义注解
@Retention: 用来定义该注解在哪个级别可用: SOURCE, CLASS, RUNTIME
@Target:用来定义你的注解将应用于什么地方
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD, ElementType.TYPE})
@PageFactoryFinder(FindBy.FindByBuilder.class)
public @interface FindBy {
How how() default How.UNSET;String using() default "";
String id() default "";
String name() default "";
String className() default "";
String css() default "";
String tagName() default "";
String linkText() default "";
String partialLinkText() default "";
String xpath() default "";
public static class FindByBuilder extends AbstractFindByBuilder {
public By buildIt(Object annotation, Field field) {
FindBy findBy = (FindBy) annotation;
assertValidFindBy(findBy);By ans = buildByFromShortFindBy(findBy);
if (ans == null) {
ans = buildByFromLongFindBy(findBy);
}return ans;
}
}
}
如何在Eclipse上查看Selenium源码:
转: https://blog.csdn.net/u011541946/article/details/72953306