java - 如果存在注释,我该如何执行某些功能?

标签 java selenium selenium-webdriver reflection annotations

所以,接下来的问题是: 我有一个负责 WebDriver 的类。每个 WebDriver 对象都是 Singletone,因此,我在许多测试中使用 ThreadLocal 来使用此驱动程序。

private static final ThreadLocal<WebDriver> threadLocalScope = new ThreadLocal<WebDriver>() {
    @Override
    protected WebDriver initialValue() {
        ConfigProperty configProperty = new ConfigProperty();
        System.setProperty(configProperty.getChromeDriver(), configProperty.getUrl());
        ChromeOptions options = new ChromeOptions();
        options.addExtensions(new File(configProperty.getChromeExtension()));
        driver = new ChromeDriver(options);
        driver.manage().window().maximize();
        return driver;
    }
};

public static WebDriver getDriver() {
    return threadLocalScope.get();
}

如您所见,当驱动程序启动时,它会安装一些 Google Chrome 扩展程序,但并非在每个测试中都需要此扩展程序。

所以,我想创建一个类似于 @InstallExtension 的注释,并在运行时查看它。如果在我的测试中存在注释,它将为 WebDriver 安装此扩展,但以其他方式 - 不会。 我该怎么做?

最佳答案

让我详细阐述一下我的评论: 创建注释后,如下所示(假设注释的目标是方法,否则只需将目标更改为 FIELD,...):

@Retention(RetentionPolicy.RUNTIME)
@Target({ METHOD})
public @interface InstallExtension{}

在你的代码中,你需要这样的东西:

if (yourClass.getMethod("name", null).isAnnotationPresent(InstallExtension.class)) {
...
}

关于java - 如果存在注释,我该如何执行某些功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49880012/

相关文章:

java - Docker 中的 Spring Boot 静态文件夹

python - Selenium python - 元素在点不可点击

java - webElement.click() 不起作用,但 action.click(webElement).build().perform();作品

selenium - 如何使用selenium删除文本字段中的默认值?

java - 如何使用 Java 在 selenium webdriver 中测试或模拟将文件从桌面拖动到浏览器

java - 使用 Platform SDK 的地点列表

java - libGDX 将正交相机沿着纹理移动

javascript - 使用 phantomjs 和 Protractor 访问 iframe 内的 Web 元素

java - 如何在 Selenium-Java Webdriver 测试项目中指定 Java 类的执行顺序

java - 从系统属性获取 JRE 版本