Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tab.close() pending until timeout.(headless only) #434

Open
hjin-me opened this issue Nov 8, 2023 · 1 comment
Open

tab.close() pending until timeout.(headless only) #434

hjin-me opened this issue Nov 8, 2023 · 1 comment

Comments

@hjin-me
Copy link

hjin-me commented Nov 8, 2023

headless_chrome = "1.0.7"
rustc 1.71.1 (eb26296b5 2023-08-03)

I try to close tab tab.close().

fn test_headless_close() -> Result<()> {
    let launch_options = LaunchOptions::default_builder()
        .path(Some(default_executable().map_err(|e| anyhow!(e))?))
        // .headless(false)
        .build()?;
    let browser = Browser::new(launch_options)?;
    let tab = browser.new_tab()?;
    tab.close(false)?;
    Ok(())
}

when .headless(false), this code works fine.

but .headless(true), this code will block on tab.close() until timeout.

I got some logs below.

headless

2023-11-08T06:57:39.059130Z TRACE headless_chrome::browser: Target info changed: TargetInfo { target_id: "EF04033ED5930248F48CDBDA995350DF", Type: "page", title: "about:blank", url: "about:blank", attached: true, opener_id: None, can_access_opener: false, opener_frame_id: None, browser_context_id: Some("B11096F29DFB994D46AD1E29B2632687") }    
2023-11-08T06:57:39.092790Z TRACE headless_chrome::browser::tab: Calling method: CloseTarget { target_id: "EF04033ED5930248F48CDBDA995350DF" }    
2023-11-08T06:57:39.092900Z TRACE headless_chrome::browser::transport::waiting_call_registry: registered 17    
2023-11-08T06:57:39.092923Z TRACE headless_chrome::browser::transport: Msg to tab: {"method":"Target.closeTarget","id":17,"params":{"targetId":"EF04033ED5930248F48CDBDA995350DF"}}    
2023-11-08T06:57:39.092946Z TRACE headless_chrome::browser::transport::waiting_call_registry: registered 18    
2023-11-08T06:57:39.154206Z TRACE headless_chrome::browser::transport: sent method call to browser via websocket    
2023-11-08T06:57:39.154265Z TRACE headless_chrome::browser::transport: waiting for response from call registry: 18 "SendMessageToTarget { message: \"{\\\"method\\\":\\\"Target.closeTarget\\\",\\\"id\\\":17,\\\"params\\\":{\\\"targetId\\\":\\\"EF04033ED5930248F48CDBDA995350DF\\\"}}\", session_id: Some(\"127C64626FBA3464FBB6DE64E1593C66\"), target_id: None }"    
// diff
2023-11-08T06:57:39.154864Z TRACE headless_chrome::browser: Target info changed: TargetInfo { target_id: "EF04033ED5930248F48CDBDA995350DF", Type: "page", title: "about:blank", url: "about:blank", attached: false, opener_id: None, can_access_opener: false, opener_frame_id: None, browser_context_id: Some("B11096F29DFB994D46AD1E29B2632687") }    
2023-11-08T06:57:39.155015Z TRACE headless_chrome::browser: Unhandled event: DetachedFromTarget(DetachedFromTargetEvent { param    
2023-11-08T06:57:39.155133Z TRACE headless_chrome::browser: Target destroyed: "EF04033ED5930248F48CDBDA995350DF"    
2023-11-08T06:57:39.156125Z TRACE headless_chrome::browser::transport::waiting_call_registry: Resolving call    
2023-11-08T06:57:39.160459Z TRACE headless_chrome::browser::transport: received response for: 18 "SendMessageToTarget { message: \"{\\\"method\\\":\\\"Target.closeTarget\\\",\\\"id\\\":17,\\\"params\\\":{\\\"targetId\\\":\\\"EF04033ED5930248F48CDBDA995350DF\\\"}}\", session_id: Some(\"127C64626FBA3464FBB6DE64E1593C66\"), target_id: None }"    
2023-11-08T06:57:39.160522Z TRACE headless_chrome::browser::transport: waiting for response from call registry: 17 "CloseTarget { target_id: \"EF04033ED5930248F48CDBDA995350DF\" }"    
// call.id 17 not Resolving

with head (success)

2023-11-08T07:02:46.514244Z TRACE headless_chrome::browser: Target info changed: TargetInfo { target_id: "78F6EF70E5CAC390202B2C843FD554C9", Type: "iframe", title: "chrome-untrusted://new-tab-page/one-google-bar?paramsencoded=", url: "chrome-untrusted://new-tab-page/one-google-bar?paramsencoded=", attached: false, opener_id: None, can_access_opener: false, opener_frame_id: None, browser_context_id: Some("535B81F83AEB785617916DE65A50A09B") }    
2023-11-08T07:02:46.555259Z TRACE headless_chrome::browser::tab: Calling method: CloseTarget { target_id: "BCC7066DC07FF28A197BA3CD5ACC738D" }    
2023-11-08T07:02:46.555319Z TRACE headless_chrome::browser::transport::waiting_call_registry: registered 22    
2023-11-08T07:02:46.555335Z TRACE headless_chrome::browser::transport: Msg to tab: {"method":"Target.closeTarget","id":22,"params":{"targetId":"BCC7066DC07FF28A197BA3CD5ACC738D"}}    
2023-11-08T07:02:46.555352Z TRACE headless_chrome::browser::transport::waiting_call_registry: registered 23    
2023-11-08T07:02:46.712592Z TRACE headless_chrome::browser::transport: sent method call to browser via websocket    
2023-11-08T07:02:46.712686Z TRACE headless_chrome::browser::transport: waiting for response from call registry: 23 "SendMessageToTarget { message: \"{\\\"method\\\":\\\"Target.closeTarget\\\",\\\"id\\\":22,\\\"params\\\":{\\\"targetId\\\":\\\"BCC7066DC07FF28A197BA3CD5ACC738D\\\"}}\", session_id: Some(\"871D2B61BDD94C235CB91D074C8048A1\"), target_id: None }"    
2023-11-08T07:02:46.713102Z TRACE headless_chrome::browser::transport::waiting_call_registry: Resolving call    
2023-11-08T07:02:46.713139Z TRACE headless_chrome::browser::transport::waiting_call_registry: Resolving call    
2023-11-08T07:02:46.716324Z TRACE headless_chrome::browser::tab: Unhandled event: InspectorDetached(DetachedEvent { params: Detached    
2023-11-08T07:02:46.719010Z TRACE headless_chrome::browser::transport: received response for: 23 "SendMessageToTarget { message: \"{\\\"method\\\":\\\"Target.closeTarget\\\",\\\"id\\\":22,\\\"params\\\":{\\\"targetId\\\":\\\"BCC7066DC07FF28A197BA3CD5ACC738D\\\"}}\", session_id: Some(\"871D2B61BDD94C235CB91D074C8048A1\"), target_id: None }"    
2023-11-08T07:02:46.719062Z TRACE headless_chrome::browser::transport: waiting for response from call registry: 22 "CloseTarget { target_id: \"BCC7066DC07FF28A197BA3CD5ACC738D\" }"    
2023-11-08T07:02:46.719075Z TRACE headless_chrome::browser::transport: received response for: 22 "CloseTarget { target_id: \"BCC7066DC07FF28A197BA3CD5ACC738D\" }"    
2023-11-08T07:02:46.719095Z TRACE headless_chrome::browser::tab: Got result: Take { iter: Chars(['O', 'k', '(', 'C', 'l', 'o', 's', 'e', 'T', 'a', 'r', 'g', 'e', 't', 'R', 'e', 't', 'u', 'r', 'n', 'O', 'b', 'j', 'e', 'c', 't', ' ', '{', ' ', 's', 'u', 'c', 'c', 'e', 's', 's', ':', ' ', 't', 'r', 'u', 'e', ' ', '}', ')']), n: 70 }    

in headless mode, closeTarget will case target Destroy make waiting_call_registry will not Resolving call then timeout.

do you have any idea to solve this?

@reecer
Copy link

reecer commented Feb 6, 2024

I'm also having this issue. If I use tab.close_with_unload() then it doesn't hang. That uses Page.close instead of Target.closeTarget

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants