所以,接下来的问题是: 我有一个负责 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/