echobot.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  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. def openBrowser():
  7. browser = webdriver.PhantomJS(executable_path=PHANTOMJS_PATH, service_log_path=os.path.devnull)
  8. browser.set_window_size(1400, 1000)
  9. browser.get("%s/1MaiL5gfBM1cyb4a8e3iiL8L5gXmoAJu27" % SITE_URL)
  10. print " * LocalStorage:", browser.execute_script("return JSON.stringify(localStorage)")
  11. # Switch to inner frame
  12. browser.switch_to.frame(browser.find_element_by_id("inner-iframe"))
  13. # Check if Inbox is active
  14. assert browser.execute_script("return window.Page.message_lists.getActive().title") == u"Inbox"
  15. # Setup new message checking script
  16. browser.execute_script("""
  17. window.replyUnreadMessage = function(cb) {
  18. var messages = window.Page.message_lists.getActive().messages
  19. var unread_messages = messages.filter(function(message) { return message.read == false })
  20. if (unread_messages.length == 0) {
  21. cb(false)
  22. return false
  23. }
  24. message = unread_messages[0]
  25. console.log("New unread message:", message.key)
  26. message.handleListClick()
  27. message.handleReplyClick()
  28. 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"
  29. Page.projector.scheduleRender()
  30. setTimeout(function() {
  31. Page.message_create.handleSendClick()
  32. cb(true)
  33. }, 1000)
  34. }
  35. window.replyTimer = function() {
  36. setTimeout(function() { replyUnreadMessage(replyTimer) }, 1000)
  37. }
  38. replyTimer()
  39. """)
  40. browser.switch_to.default_content()
  41. return browser
  42. browser = openBrowser()
  43. last_log_line = 0
  44. while 1:
  45. try:
  46. lines = browser.get_log("browser")
  47. for line in lines[last_log_line:]:
  48. print line["message"].replace("(:)", "")
  49. last_log_line += 1
  50. except Exception, err:
  51. print "Error", err
  52. browser = openBrowser()
  53. last_log_line = 0
  54. time.sleep(5)