Skip to content

Commit

Permalink
feat: proxy docs
Browse files Browse the repository at this point in the history
  • Loading branch information
cssxsh committed Nov 24, 2021
1 parent b34f8a0 commit 2fefb9d
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 1 deletion.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,14 @@ dependencies {

## 配置

### MiraiSeleniumConfig.yml
### [MiraiSeleniumConfig.yml](src/main/kotlin/xyz/cssxsh/mirai/plugin/data/MiraiSeleniumConfig.kt)

* user_agent 截图UA
* width 截图宽度
* height 截图高度
* pixel_ratio 截图像素比
* headless 无头模式(后台模式)
* proxy 代理地址
* browser 指定使用的浏览器,`Chrome`,`Firefox`,`Edge`
* factory 指定使用的Factory, `ktor`,`netty`

Expand Down
67 changes: 67 additions & 0 deletions src/test/kotlin/xyz/cssxsh/selenium/SeleniumToolKtTest.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package xyz.cssxsh.selenium

import kotlinx.coroutines.*
import org.junit.jupiter.api.*
import org.openqa.selenium.remote.*
import xyz.cssxsh.mirai.plugin.data.MiraiSeleniumConfig
import java.io.*

internal class SeleniumToolKtTest {

private val folder = File("run")

private val browsers = listOf("Chrome", "Edge", "Firefox")

private val config = object : RemoteWebDriverConfig by MiraiSeleniumConfig {
override val userAgent: String = UserAgents.IPAD + " MicroMessenger"
override val headless: Boolean = true
override val proxy: String = ""
override val browser: String = ""
override val factory: String = "netty"
}

private fun useRemoteWebDriver(block: suspend CoroutineScope.(String, RemoteWebDriver) -> Unit) {
for (browser in browsers) {
setupSelenium(folder = folder, browser = browser, factory = config.factory)
runBlocking(KtorContext) {
var driver: RemoteWebDriver? = null
try {
driver = RemoteWebDriver(config = config)
block(browser, driver)
} catch (cause: Throwable) {
cause.printStackTrace()
} finally {
driver?.quit()
}
}
}
}

@Test
fun screenshot(): Unit = useRemoteWebDriver { browser, driver ->

val url = "https://t.bilibili.com/h5/dynamic/detail/450055453856015371"

val hide = arrayOf(".open-app", ".launch-app-btn", ".unlogin-popover", ".no-login")

val screenshot = driver.getScreenshot(url = url, hide = hide)

folder.resolve("screenshot.${browser.lowercase()}.png").writeBytes(screenshot)
}

@Test
fun pdf(): Unit = useRemoteWebDriver { browser, driver ->

driver.get("https://hub.fastgit.org/mamoe/mirai/blob/dev/README.md")

val start = System.currentTimeMillis()
while (isActive) {
if (driver.isReady()) break
if (System.currentTimeMillis() - start > 180_000) break
delay(10_000)
}

val pdf = driver.printToPDF()
folder.resolve("print.${browser.lowercase()}.pdf").writeBytes(pdf)
}
}

0 comments on commit 2fefb9d

Please sign in to comment.