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 - 如何检查浏览器是不是仍然存在或仍然打开?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 WebDriver 检查是不是存在警报?

在 Python 中,如何检查 Selenium WebDriver 是不是已退出?

如何使用 Selenium WebDriver 检查元素是不是可点击

如何使用 selenium webdriver 检查按钮是不是可点击

WebDriver:检查元素是不是存在? [复制]

Selenium Webdriver:如何检查特定屏幕上是不是存在 ui 元素,无论它当前是不是可见/可点击