package chromedp_test import ( "bytes" "context" "fmt" "io/ioutil" "os" "path/filepath" "github.com/chromedp/chromedp" ) func ExampleTitle() { ctx, cancel := chromedp.NewContext(context.Background()) defer cancel() var title string if err := chromedp.Run(ctx, chromedp.Navigate("https://github.com/chromedp/chromedp/issues"), chromedp.WaitVisible("#start-of-content", chromedp.ByID), chromedp.Title(&title), ); err != nil { panic(err) } fmt.Println(title) // no expected output, to not run this test as part of 'go test'; it's // too slow, requiring internet access. } func ExampleExecAllocator() { dir, err := ioutil.TempDir("", "chromedp-example") if err != nil { panic(err) } defer os.RemoveAll(dir) opts := []chromedp.ExecAllocatorOption{ chromedp.NoFirstRun, chromedp.NoDefaultBrowserCheck, chromedp.Headless, chromedp.DisableGPU, chromedp.UserDataDir(dir), } allocCtx, cancel := chromedp.NewExecAllocator(context.Background(), opts...) defer cancel() taskCtx, cancel := chromedp.NewContext(allocCtx) defer cancel() // ensure that the browser process is started if err := chromedp.Run(taskCtx); err != nil { panic(err) } path := filepath.Join(dir, "DevToolsActivePort") bs, err := ioutil.ReadFile(path) if err != nil { panic(err) } lines := bytes.Split(bs, []byte("\n")) fmt.Printf("DevToolsActivePort has %d lines\n", len(lines)) // Output: // DevToolsActivePort has 2 lines } func ExampleNewContext_manyTabs() { // new browser, first tab ctx1, cancel := chromedp.NewContext(context.Background()) defer cancel() // ensure the first tab is created if err := chromedp.Run(ctx1); err != nil { panic(err) } // same browser, second tab ctx2, _ := chromedp.NewContext(ctx1) // ensure the second tab is created if err := chromedp.Run(ctx2); err != nil { panic(err) } c1 := chromedp.FromContext(ctx1) c2 := chromedp.FromContext(ctx2) fmt.Printf("Same browser: %t\n", c1.Browser == c2.Browser) fmt.Printf("Same tab: %t\n", c1.Target == c2.Target) // Output: // Same browser: true // Same tab: false }