Shell Scriptで 8/3 OSC2019京都 懇親会の会場を御案内します

Shell Scriptで 8/3 OSC2019京都 懇親会の会場を御案内します

Shell Scriptで 8/3 OSC2019京都 懇親会の会場を御案内します。

Ee4c337fbe0db506f2fa17568ba3c7c8?s=128

東平洋史

July 14, 2019
Tweet

Transcript

  1. Shell Script 8/3 OSC2019     

  2.    

  3.     

  4.  ?

  5.    

  6. None
  7. Shell Script 

  8.   +),$)&1.,  1.  2. Web-0%' 3. OSC

    /3($ 4.  /3(! 12&$&1*& 5. $&1*& 6.  $$&1*& 7.  #" 8. 
  9.  • 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/
  10.  HTTP  (JSON) HTTP (JSON) httpie  Chrome Driver

      
  11. 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.
  12. HTTPie  http [flags] [METHOD] URL [ITEM [ITEM]] ↓ RESPONSE=¥

    $(echo ‘(JSON)’ | ¥ http  APIURL ) API  https://w3c.github.io/webdriver/webdriver-spec.html http 
  13. 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 
  14. (Chrome Driver ) pkill chromedriver chromedriver &

  15. Google Chrome  RESPONSE=$(http POST localhost:9515/session ¥ desiredCapabilities:='{}’ ¥ requiredCapabilities:='{}')

    #  ID SESSION_ID=$(echo ${RESPONSE} | jq -r .sessionId)
  16. http  { "sessionId": "8dc5eab177a254e8f36b4eceb8b2f427", "status": 0, () }

  17.  sessionId  { "sessionId": "8dc5eab177a254e8f36b4eceb8b2f427", "status": 0, () }

  18. OSC  http POST ¥ localhost:9515/session/${SESSION_ID}/url ¥ url= https://www.ospn.jp/osc2019-kyoto/

  19. OSC  TITLE="" while [ "${TITLE}" != "  

    2019 Kyoto -   " ] do RESPONSE=$(http GET ¥ localhost:9515/session/${SESSION_ID}/title) TITLE=$(echo ${RESPONSE} | jq -r .value) done
  20.     RESPONSE=$(http POST ¥ localhost:9515/session/${SESSION_ID}/element ¥ using=‘link

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

    "ELEMENT": "0" }, "class": "org.openqa.selenium.remote.Response", "status": 0 }    success ID
  22.  http POST ¥ localhost:9515 /session/${SESSION_ID} /element/${ELEMENT_ID}/click # () URI

  23.  iFrame RESPONSE=$(http POST ¥ localhost:9515/session/${SESSION_ID}/element ¥ using=‘css selector’ ¥

    value=“div[id='side_area’] div[class='map_image mt_5'] iframe”) #value   # ELEMENT_IDiFrameID ELEMENT_ID=$(echo ${RESPONSE} | ¥ jq .value | jq -r .ELEMENT)
  24. iFrame http POST ¥ localhost:9515 /session/${SESSION_ID} /element/${ELEMENT_ID}/click # () URI

     # iFrame
  25. 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   
  26. ( ) http DELETE localhost:9515/session/${SESSION_ID} pkill chromedriver

  27.     

  28.  bash" '%# Google Chrome   • Chrome Driver

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

  30. None
  31.  ( ^^)