我需要检查一组页面对象,以查看每个对象是否在其WebDriver上调用了quit()。
我编写了以下方法来检查WebDriver的状态:
public static boolean hasQuit(WebDriver driver) { try { driver.getTitle(); return false; } catch (SessionNotFoundException e) { return true; } }
问题就在这里:我不喜欢抛出异常来发现布尔值的真相,但是由于 WebDriver API 没有提供检查驱动程序是否退出的方法,因此我似乎别无选择。
所以我的问题是, 是否有更好的方法来检查WebDriver是否已退出?
我在这里找到了一个类似的问题(但更普遍),但是问题没有尝试过任何代码,唯一的答案是退出后始终将WebDriver设置为null(我不一定可以控制) 。
如果quit()已调用,则driver.toString()返回null:
quit()
driver.toString()
>>> FirefoxDriver: firefox on XP (null))
否则,它将返回对象的哈希码:
>>> FirefoxDriver: firefox on XP (9f897f52-3a13-40d4-800b-7dec26a0c84d)
因此您可以在分配布尔值时检查null:
boolean hasQuit = driver.toString().contains("(null)");