Swiftで雑にSelenium! [Swift -> PythonKit -> Selenium]


ハイライト

Swift で PythonKit を利用して Selenium を動かします。

対象の読者

  • Swift Package Manager の利用経験がある方
  • Selenium がなんとなく分かる方
  • Python を雰囲気で書ける方

向けに雑にご紹介致します。

PythonKit の導入

PythonKitのREADME に従い,Swift Package Manager を用いて導入します。

Package.swift
.package(url: "https://github.com/pvieito/PythonKit.git", .branch("master")),

Usage の通り,runした際にバージョンが出力されれば導入完了です。

main.swift
import PythonKit

let sys = try Python.import("sys")

print("Python \(sys.version_info.major).\(sys.version_info.minor)")
print("Python Version: \(sys.version)")
print("Python Encoding: \(sys.getdefaultencoding().upper())")

Selenium の導入

pipbrew を用いてインストールします。WebDriver は ChromeDriverにしました。何でも良いです。

$ pip install selenium
$ brew cask install chromedriver

Selenium チュートリアルを Swift から書く

ChromeDriver の Python チュートリアルを Swift で書き直してみましょう。こんな感じになります。

main.swift
import PythonKit

let time = Python.import("time")
let webdriver = Python.import("selenium.webdriver")

let driver = webdriver.Chrome("/usr/local/bin/chromedriver")
driver.get("https://www.google.com/")
time.sleep(5)
let searchBox = driver.find_element_by_name("q")
searchBox.send_keys("ChromeDriver")
searchBox.submit()
time.sleep(5)
driver.quit()

まとめ

Swift で雑に Selenium してみました。いかがでしたか?

PythonKit のチュートリアルにはなったかもしれません。

一方で,PythonKit 経由での import のため,Xcode で書いても残念ながら補完は効きません。エラーは出力されるので雑に雰囲気で書きましょう。それが本記事のオチです。

References