echobot.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. import os
  2. import time
  3. from selenium import webdriver
  4. PHANTOMJS_PATH = "tools/phantomjs/bin/phantomjs"
  5. SITE_URL = "http://127.0.0.1:43110"
  6. browser = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, service_log_path=os.path.devnull)
  7. browser.set_window_size(1400, 1000)
  8. browser.get("%s/1MaiL5gfBM1cyb4a8e3iiL8L5gXmoAJu27" % SITE_URL)
  9. print " * LocalStorage:", browser.execute_script("return JSON.stringify(localStorage)")
  10. # Switch to inner frame
  11. browser.switch_to.frame(browser.find_element_by_id("inner-iframe"))
  12. # Check if Inbox is active
  13. assert browser.execute_script("return window.Page.message_lists.getActive().title") == u"Inbox"
  14. # Setup new message checking script
  15. browser.execute_script("""
  16. window.replyUnreadMessage = function(cb) {
  17. var messages = window.Page.message_lists.getActive().messages
  18. var unread_messages = messages.filter(function(message) { return message.read == false })
  19. if (unread_messages.length == 0) {
  20. cb(false)
  21. return false
  22. }
  23. message = unread_messages[0]
  24. console.log("New unread message:", message.key)
  25. message.handleListClick()
  26. message.handleReplyClick()
  27. Page.message_create.body = "This is an echo of your message:\\n> " + message.row.body.replace(/\\n/g, "\\n> ") + "\\n\\nGreetings:\\nThe ZeroMail echo bot"
  28. Page.projector.scheduleRender()
  29. setTimeout(function() {
  30. Page.message_create.handleSendClick()
  31. cb(true)
  32. }, 1000)
  33. }
  34. window.replyTimer = function() {
  35. setTimeout(function() { replyUnreadMessage(replyTimer) }, 1000)
  36. }
  37. replyTimer()
  38. """)
  39. browser.switch_to.default_content()
  40. last_log_line = 0
  41. while 1:
  42. lines = browser.get_log("browser")
  43. for line in lines[last_log_line:]:
  44. print line["message"].replace("(:)", "")
  45. last_log_line += 1
  46. time.sleep(5)