Webdriver - 如何检查浏览器是不是仍然存在或仍然打开?
Posted
技术标签:
【中文标题】Webdriver - 如何检查浏览器是不是仍然存在或仍然打开?【英文标题】:Webdriver - How to check if browser still exists or still open?Webdriver - 如何检查浏览器是否仍然存在或仍然打开? 【发布时间】:2015-02-21 08:46:45 【问题描述】:我想检查浏览器是否仍然存在,如果不存在,那么我想打开一个新的浏览器! webdriver中是否有可用的api来检查浏览器是否仍然存在?
【问题讨论】:
【参考方案1】:调用driver.close()
后驱动的值设置为
FirefoxDriver: firefox on WINDOWS(4b4ffb1e-7c02-4d9c-b37b-310c771492ac)
但如果你调用driver.quit()
,那么它会将驱动程序的值设置为
FirefoxDriver: firefox on WINDOWS (null)
因此,如果您在调用 driver.quit() 后检查浏览器窗口,那么您将能够通过以下实现知道。
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com");
driver.quit();
if(driver.toString().contains("null"))
System.out.print("All Browser windows are closed ");
else
//open a new Browser
【讨论】:
这是个糟糕的主意。检查任何东西的toString
方法以确定应用程序逻辑是在自取其辱。
@gzm0 有更好的主意吗?我找不到任何 api 来检查状态。【参考方案2】:
它没有 api。最好的方法是调用toString
方法,它返回如下字符串:
SafariDriver . . . null
然后你可以调用contains
方法,它会检查字符串null
是否存在。
请注意,这仅在调用 quit
时才有效。
【讨论】:
【参考方案3】:我积极地将它用于 Chrome。同时,由于我运行的是cmd title的浏览器,所以可以关闭命令行来摆脱过多的负载。
from selenium.common.exceptions import WebDriverException
while True:
try:
#do somethings
except selenium.common.exceptions.WebDriverException as e:
if 'chrome not reachable' in str(e):
os.system('taskkill /FI "WindowTitle eq YourTitleIfExistsOrDeleteThisLine*" /T /F')
【讨论】:
【参考方案4】:public void isBrowserWindowOpen(WebDriver dr)
RemoteWebDriver driver = (RemoteWebDriver) dr;
try
driver.getWindowHandles();
catch (NullPointerException | NoSuchSessionException e)
//open a new Browser
【讨论】:
以上是关于Webdriver - 如何检查浏览器是不是仍然存在或仍然打开?的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 中,如何检查 Selenium WebDriver 是不是已退出?
如何使用 Selenium WebDriver 检查元素是不是可点击