WebDriver 的協議標準 W3C

Selenium WebDriver 快速入門工程:

https://github.com/Jason-Chen-2017/go-selenium

import org.openqa.selenium.By
import org.openqa.selenium.chrome.ChromeDriver
import org.openqa.selenium.chrome.ChromeOptions
import org.openqa.selenium.remote.CapabilityType
import org.openqa.selenium.remote.DesiredCapabilities
import java.lang.Thread.sleep
import java.util.concurrent.TimeUnit

fun main(args: Array<String>) {
    val driver = initDriver()

    try {
        driver.get("https://www.baidu.com/")
        driver.findElement(By.id("kw")).click()
        driver.findElement(By.id("kw")).sendKeys("Kotlin")
        driver.findElement(By.id("su")).click()

        sleep(3000)

        // 百度搜索 Kotlin,自動翻10頁
        for (i in 1..10) {
            driver.executeScript("scrollTo(0,2000)")
            sleep(3000)
            val e = driver.findElementByPartialLinkText("""下一頁""")
            e.click()
        }

        sleep(7000)
    } catch (e: Exception) {
        e.printStackTrace()
    }

    driver.quit()
}

private fun initDriver(): ChromeDriver {
    System.setProperty("webdriver.chrome.driver", "chromedriver")// 設置 webdriver 路徑到系統環境變量中
    val capabilities = DesiredCapabilities.chrome()
    // SSL Certificate
    capabilities.setCapability(CapabilityType.TAKES_SCREENSHOT, true)
    capabilities.setCapability(CapabilityType.SUPPORTS_JAVASCRIPT, true)

    val headless = false
    var driver = ChromeDriver(chromeOptions(headless))
    val sessionId = driver.sessionId
    println("sessionId=${sessionId}")
    driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS)
    return driver
}


fun chromeOptions(headless: Boolean): ChromeOptions {
    val options = ChromeOptions()
    if (headless) {
        options.addArguments("headless")
    }
    return options
}

WebDriver W3C 標準協議:

https://w3c.github.io/webdriver/

Method

URI Template

Command

POST

/session

New Session

DELETE

/session/{session id}

Delete Session

GET

/status

Status

GET

/session/{session id}/timeouts

Get Timeouts

POST

/session/{session id}/timeouts

Set Timeouts

POST

/session/{session id}/url

Navigate To

GET

/session/{session id}/url

Get Current URL

POST

/session/{session id}/back

Back

POST

/session/{session id}/forward

Forward

POST

/session/{session id}/refresh

Refresh

GET

/session/{session id}/title

Get Title

GET

/session/{session id}/window

Get Window Handle

DELETE

/session/{session id}/window

Close Window

POST

/session/{session id}/window

Switch To Window

GET

/session/{session id}/window/handles

Get Window Handles

POST

/session/{session id}/frame

Switch To Frame

POST

/session/{session id}/frame/parent

Switch To Parent Frame

GET

/session/{session id}/window/rect

Get Window Rect

POST

/session/{session id}/window/rect

Set Window Rect

POST

/session/{session id}/window/maximize

Maximize Window

POST

/session/{session id}/window/minimize

Minimize Window

POST

/session/{session id}/window/fullscreen

Fullscreen Window

GET

/session/{session id}/element/active

Get Active Element

POST

/session/{session id}/element

Find Element

POST

/session/{session id}/elements

Find Elements

POST

/session/{session id}/element/{element id}/element

Find Element From Element

POST

/session/{session id}/element/{element id}/elements

Find Elements From Element

GET

/session/{session id}/element/{element id}/selected

Is Element Selected

GET

/session/{session id}/element/{element id}/attribute/{name}

Get Element Attribute

GET

/session/{session id}/element/{element id}/property/{name}

Get Element Property

GET

/session/{session id}/element/{element id}/css/{property name}

Get Element CSS Value

GET

/session/{session id}/element/{element id}/text

Get Element Text

GET

/session/{session id}/element/{element id}/name

Get Element Tag Name

GET

/session/{session id}/element/{element id}/rect

Get Element Rect

GET

/session/{session id}/element/{element id}/enabled

Is Element Enabled

POST

/session/{session id}/element/{element id}/click

Element Click

POST

/session/{session id}/element/{element id}/clear

Element Clear

POST

/session/{session id}/element/{element id}/value

Element Send Keys

GET

/session/{session id}/source

Get Page Source

POST

/session/{session id}/execute/sync

Execute Script

POST

/session/{session id}/execute/async

Execute Async Script

GET

/session/{session id}/cookie

Get All Cookies

GET

/session/{session id}/cookie/{name}

Get Named Cookie

POST

/session/{session id}/cookie

Add Cookie

DELETE

/session/{session id}/cookie/{name}

Delete Cookie

DELETE

/session/{session id}/cookie

Delete All Cookies

POST

/session/{session id}/actions

Perform Actions

DELETE

/session/{session id}/actions

Release Actions

POST

/session/{session id}/alert/dismiss

Dismiss Alert

POST

/session/{session id}/alert/accept

Accept Alert

GET

/session/{session id}/alert/text

Get Alert Text

POST

/session/{session id}/alert/text

Send Alert Text

GET

/session/{session id}/screenshot

Take Screenshot

GET

/session/{session id}/element/{element id}/screenshot

Take Element Screenshot

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章