現在のページのURLを取得する方法

2672 ワード

previous article , 我々は、シンプルなアプリケーションとオープンGoogleを開発しました.CMOSMapによるCOMこの記事では、ページとURLを扱うために、chromedpの機能の一つを見ていきます.
開発者がそれを行うために使用することを決めた方法は、Golang開発者と共に非常に人気のある方法であり、変数の参照を関数に渡します.例えば、囲碁ライブラリでは同じパターンがたくさん見られます.GORM また、同じパターンを使用します.
今日のシナリオでは、chromedP Githubページを開き、リポジトリ内のファイルの一つに移動し、ページのURLを印刷します.シンプルで簡単!だから始めましょう!
そのためには、クリックしたい要素を選択する必要があります.我々は手動で、自動的に行うものを作りたいと思います.これは、utilound testという名前のファイルを開きたい場合です.最初に、我々はURLに行く必要がありますhttps://github.com/chromedp/chromedp 次に、リスト内のファイルを見つけ、それをクリックします.ページ内の要素を見つけるにはCSS Selectors .
// our selector to find the file inside the page.
selector := "a[title='util_test.go']"
tasks := chromedp.Tasks{
  // go to the page
    chromedp.Navigate("https://github.com/chromedp/chromedp"),
  // wait until the elemnt is visible and available inside the page
    chromedp.WaitEnabled(selector),
  // do a click on it
    chromedp.Click(selector),
}

だから、私たちはすでにページのURLを取得している残っている唯一のステップを望んでいるページに移動します.この目的のために、文字列変数を定義し、chromedpの位置関数に渡します.
var u string
...
chromedp.Location(&u),

そして、完全なコードです.
package main

import (
    "context"
    "fmt"

    "github.com/chromedp/chromedp"
)

func main() {
    var u string
    opts := append(
        // select all the elements after the third element
        chromedp.DefaultExecAllocatorOptions[3:],
        chromedp.NoFirstRun,
        chromedp.NoDefaultBrowserCheck,
    )
    // create chromedp's context
    parentCtx, cancel := chromedp.NewExecAllocator(context.Background(), opts...)
    defer cancel()

    selector := "a[title='util_test.go']"
    tasks := chromedp.Tasks{
        chromedp.Navigate("https://github.com/chromedp/chromedp"),
        chromedp.WaitEnabled(selector),
        chromedp.Click(selector),
        chromedp.Location(&u),
    }
    ctx, cancel := chromedp.NewContext(parentCtx)
    defer cancel()
    if err := chromedp.Run(ctx, tasks); err != nil {
        panic(err)
    }
    fmt.Printf("URL => %s\n", u)
}

出力は:
URL => https://github.com/chromedp/chromedp/blob/master/util_test.go