【发布时间】:2018-06-25 22:31:49
【问题描述】:
我有一堆 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()等方法将通过许多客户端访问,我如何强制doA()、doB()或doC()的client在它之前将WebDriver配置文件的状态设置为可用回报?如果将来某个时候我忘记将给定配置文件的状态更改为可用(在客户端),它将永远保持不可用,这将导致很多问题。
那么我如何保证调用doA()、doB() 和doC() 的任何方法在返回之前都将配置文件状态设置为可用?
附言
This 是我在 SO 上找到的最接近的问题,但我相信这并不能解决我的问题,因为我无法控制实际的 WebDriver 类,我只是希望每个上述方法的客户端执行某个操作在他们回来之前。
AutoClosable 也不起作用,因为我没有尝试关闭类的特定实例(我不控制类),我希望某个方法的客户端在它之前执行特定的方法或代码完成。
【问题讨论】:
-
也许传入
Consumer<WebDriver>并要求客户在 lambda/方法参考中做他们需要的一切?
标签: java selenium-webdriver webdriver try-with-resources autocloseable