@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.youkuaiyun.com/u011541946/article/details/72953306
本文深入解析Selenium框架中@FindBy注解的使用方法及其内部实现原理,介绍如何通过此注解将页面元素转换为WebElement对象,适用于PageObject设计模式。
1万+

被折叠的 条评论
为什么被折叠?



