Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Shell Scriptで6/1 OSC19do 大懇親会の会場を御案内します

Shell Scriptで6/1 OSC19do 大懇親会の会場を御案内します

Selenium WebDriverはShell Scriptでも使用可能です。HTTPieとjqを組み合わせて実装したので、その方法を説明し、デモとして題名通りの事をいたします。

東平洋史

May 05, 2019
Tweet

More Decks by 東平洋史

Other Decks in Technology

Transcript

  1.  !+),$ )&1.,! 1.  2. Web-0%' 3. GoogleOSC19do $

    4. Connpass!/2($ 5. $&1*& 6.  $$&1*& 7.  #" 8. 
  2.  • Bash – Linux, MacOS, Windows Subsystem for Linux

    (,FreeBSD, …) • Google Chrome • Google Chrome Driver https://sites.google.com/a/chromium.org/chromedriver/ • HTTPie (cURL ) https://github.com/jakubroztocil/httpie • jq (JSON  sed ) https://stedolan.github.io/jq/download/
  3. HTTPie: a CLI, cURL-like tool for humans • https://github.com/jakubroztocil/httpie 

    HTTPie (pronounced aitch-tee-tee-pie) is a command line HTTP client. Its goal is to make CLI interaction with web services as human- friendly as possible. It provides a simple http command that allows for sending arbitrary HTTP requests using a simple and natural syntax, and displays colorized output. HTTPie can be used for testing, debugging, and generally interacting with HTTP servers.
  4. HTTPie  http [flags] [METHOD] URL [ITEM [ITEM]] ↓ RESPONSE=¥

    $(echo ‘(JSON)’ | ¥ http  APIURL ) API  https://w3c.github.io/webdriver/webdriver-spec.html http 
  5. Selenium WebDriverAPI ( ) +#%( URI&0)/1' *0( POST /session "%!,0

     POST /session/{session id}/url URL  GET /session/{session id}/title $'. POST /session/{session id}/element   POST /session/{session id} /element/{element id}/sendKeys   1  POST /session/{session id} /element/{element id}/click   -% https://w3c.github.io/webdriver/webdriver-spec.html 
  6. Google   RESPONSE=$(http POST ¥ localhost:9515/session/${SESSION_ID}/element ¥ using=name value=q)

    # ELEMENT_ID ID  ELEMENT_ID=$(echo ${RESPONSE} | ¥ jq .value | jq -r .ELEMENT)
  7. http { "state": "success", “sessionId”: "da990f64-671f-4b4e-b4f9-af3363fb54e8", "hCode": 1209818291, "value": {

    "ELEMENT": "0" }, "class": "org.openqa.selenium.remote.Response", "status": 0 }    success ID
  8. OSC19do   echo “{¥“value¥”:[¥“OSC19do  ¥n¥"]}” | ¥ http

    POST localhost:9515 /session/${SESSION_ID} /element/${ELEMENT_ID}/value) #() URI 
  9.    TITLE="" while [ "${TITLE}" != " OSC19do

     - Google " ] do RESPONSE=$(http GET ¥ localhost:9515/session/${SESSION_ID}/title) TITLE=$(echo ${RESPONSE} | jq -r .value) done
  10.   RESPONSE=$(echo ¥ ”{¥“using¥”:¥”link text¥”,¥ ¥“value¥”:¥“6/1 OSC19do  –

    connpass¥”}” | ¥ http POST localhost:9515 /session/${SESSION_ID}/element) # ( ) URI # ELEMENT_ID ID ELEMENT_ID=$(echo ${RESPONSE} | jq -r .status)
  11. iFrame STATE ="" while ["${STATE}" != 0 ] do RESPONSE=$(echo

    "{¥"id¥":{¥"ELEMENT¥":¥"${ELEMENT_ID}¥"}}" | ¥ http POST ¥ localhost:9515/session/${SESSION_ID}/frame) TITLE=$(echo ${RESPONSE} | jq -r . status) done     iFrame   
  12.  bash" '%# Google Chrome   • Chrome Driver

    • http!&($HTTP' "# Chrome Driver   • JSON   https://github.com/hirokundayon/Emily