Java:强制客户端方法在返回之前执行代码

时间:2018-01-17 05:53:59

标签: java selenium-webdriver webdriver try-with-resources autocloseable

我有一堆WebDriver配置文件(让我们称之为x,y和z),我需要选择一个随机配置文件来执行某些操作。我们称之为行动A,B和C.

在我的课程WebDriverManager中,我定义了三种方法:doA()doB()doC()。每种方法都会选择当前未使用 a)的随机配置文件,以及有资格执行指定操作的 b)

如果client拨打doA(), doB() or doC(),他们将获得WebDriver个人资格,可以执行操作A,B或C. doA(), doB() or doC()也会设置所述状态配置文件到UNAVAILABLE(通过props文件),以便不再为不同的操作返回配置文件(或者从不同的线程调用相同的操作),直到它再次可用。

我的问题是,只有当客户端完成将所述配置文件用于其预期目的时,该配置文件才可用。

由于方法doA()等将通过许多客户访问,我如何强制client doA()doB()doC()来设置WebDriver个人资料在返回之前的状态为AVAILABLE?如果将来某个时候我忘记将给定配置文件的状态更改为AVAILABLE(在客户端中),它将永远保持不可用,这将导致很多问题。

那么我怎样才能保证调用doA()doB()doC()的方法在返回之前将配置文件状态设置为AVAILABLE?

P.S。

This是我在SO上发现的最接近的问题,但我相信这并不能解决我的问题,因为我无法控制实际的WebDriver类,我只想让每个所述方法的客户端在他们返回之前执行某项行动。

AutoClosable也无法工作,因为我没有尝试关闭某个特定的类实例(我不控制该类),我希望某个方法的客户端执行特定的方法或代码在它结束之前。

1 个答案:

答案 0 :(得分:0)

从听起来如此定义的方式来看,WebDriverManager的当前实例应该跟踪当前测试使用的配置文件。如果还没有,则必须编写此代码。在测试清理期间,调用WebDriverManager.SetProfileAvailable()之类的东西,将使用过的配置文件设置回AVAILABLE。