Advertisement
Guest User

Untitled

a guest
Dec 12th, 2018
737
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.36 KB | None | 0 0
  1. def setup
  2. @proxy = configure_proxy
  3. @headless = Headless.new(display: 91)
  4. @headless.start
  5. # Selenium::WebDriver.logger.level = :info #uncomment this if you need more info, but less than debug
  6. # Selenium::WebDriver.logger.level = :debug #uncomment this if you need to debug
  7. # opts = Selenium::WebDriver::Firefox::Options.new(log_level: :trace) #uncomment this if you need to debug
  8. @capabilities = Selenium::WebDriver::Remote::Capabilities.firefox(accept_insecure_certs: true)
  9. @driver = Selenium::WebDriver.for :firefox, desired_capabilities: @capabilities, profile: browser_profile#, options: opts #uncomment this if you need to debug
  10. end
  11.  
  12. def cust_data
  13. cust_data = CSV.read '/home/mwilliams/selenium/test_data/enroll_data_1.csv'
  14. descriptor = cust_data.shift
  15. descriptor = descriptor.map { |key| key.to_sym }
  16. cust_data.map { |cust| Hash[descriptor.zip(cust) ] }
  17. end
  18.  
  19. def teardown
  20. ensure
  21. @driver.quit
  22. @proxy.close
  23. @headless.destroy
  24. end
  25.  
  26. require 'rubygems'
  27. require 'headless'
  28. require 'selenium-webdriver'
  29. require 'browsermob/proxy'
  30. require 'rspec/expectations'
  31. require 'csv'
  32. include RSpec::Matchers
  33.  
  34. def configure_proxy
  35. proxy_binary = BrowserMob::Proxy::Server.new('./browsermob-proxy/bin/browsermob-proxy')
  36. proxy_binary.start
  37. proxy_binary.create_proxy
  38. end
  39.  
  40. def browser_profile
  41. browser_profile = Selenium::WebDriver::Firefox::Profile.new
  42. browser_profile.proxy = @proxy.selenium_proxy
  43. browser_profile
  44. end
  45.  
  46. def teardown
  47. ensure
  48. @driver.quit
  49. @proxy.close
  50. @headless.destroy
  51. end
  52.  
  53. def wait_for(seconds)
  54. Selenium::WebDriver::Wait.new(timeout: seconds).until {yield}
  55. end
  56.  
  57. def page_title
  58. puts "Current page = #{@driver.title}"
  59. end
  60.  
  61. def add_inbox
  62. @driver.find_element(:css, 'blahblahblah')
  63. end
  64.  
  65. def accept_inbox
  66. @driver.find_element(:css, 'blahblahblahs')
  67. end
  68.  
  69. def retry_on_accept_inbox(displayed)
  70. yield
  71. until !accept_inbox.displayed?
  72. yield
  73. end
  74. end
  75.  
  76. def email_new
  77. @driver.find_element(:css, 'blahblahblah')
  78. end
  79.  
  80. def enroll_btn
  81. @driver.find_element(id: 'blahblahblah')
  82. end
  83.  
  84. def enroll_err
  85. @driver.find_element(:css, 'blahblahblah')
  86. end
  87.  
  88. def retry_on_enroll_err(displayed)
  89. yield
  90. until !enroll_err.displayed?
  91. yield
  92. end
  93. end
  94.  
  95. def nada_email
  96. @driver.find_element(:css, 'blahblahblah')
  97. end
  98.  
  99. def retry_on_nada_email(displayed)
  100. yield
  101. until nada_email.displayed?
  102. yield
  103. end
  104. end
  105.  
  106. def retry_on_wrong_email(text)
  107. yield
  108. until nada_email.text
  109. yield
  110. end
  111. end
  112.  
  113. def login_user
  114. @driver.find_element(id: 'username')
  115. end
  116.  
  117. def login_err
  118. @driver.find_element(id: 'user-form-alert')
  119. end
  120.  
  121. def retry_on_login_err(displayed)
  122. yield
  123. until !login_err.displayed?
  124. yield
  125. end
  126. end
  127.  
  128. def digital_consent
  129. @driver.find_element(id: 'blahblahblah')
  130. end
  131.  
  132. def rescue_exceptions
  133. begin
  134. yield
  135. rescue Selenium::WebDriver::Error::NoSuchElementError => e
  136. false
  137. puts e.message
  138. @driver.save_screenshot "/home/mwilliams/selenium/screenshots/failures/#{Time.now.strftime("no_element_%m-%d-%Y_%H%M%S")}.png"
  139. rescue Selenium::WebDriver::Error::ElementNotVisibleError => e
  140. false
  141. puts e.message
  142. @driver.save_screenshot "/home/mwilliams/selenium/screenshots/failures/#{Time.now.strftime("not_visible_%m-%d-%Y_%H%M%S")}.png"
  143. rescue Selenium::WebDriver::Error::StaleElementReferenceError => e
  144. false
  145. puts e.message
  146. @driver.save_screenshot "/home/mwilliams/selenium/screenshots/failures/#{Time.now.strftime("stale_element_%m-%d-%Y_%H%M%S")}.png"
  147. retry
  148. rescue Selenium::WebDriver::Error::TimeOutError => e
  149. false
  150. puts e.message
  151. @driver.save_screenshot "/home/mwilliams/selenium/screenshots/failures/#{Time.now.strftime("timeout_%m-%d-%Y_%H%M%S")}.png"
  152. rescue Selenium::WebDriver::Error::ElementClickInterceptedError => e
  153. puts e.message
  154. @driver.save_screenshot "/home/mwilliams/selenium/screenshots/failures/#{Time.now.strftime("intercept_%m-%d-%Y_%H%M%S")}.png"
  155. retry
  156. rescue Selenium::WebDriver::Error::UnknownError => e
  157. puts e.message
  158. @driver.save_screenshot "/home/mwilliams/selenium/screenshots/failures/#{Time.now.strftime("unknown_%m-%d-%Y_%H%M%S")}.png"
  159. retry
  160. rescue RSpec::Expectations::ExpectationNotMetError => e
  161. false
  162. puts e.message
  163. @driver.save_screenshot "/home/mwilliams/selenium/screenshots/failures/#{Time.now.strftime("failshot_%m-%d-%Y_%H%M%S")}.png"
  164. end
  165. end
  166.  
  167. def run
  168. setup
  169. begin
  170. yield
  171. end
  172. teardown
  173. end
  174.  
  175. cust_data.each do |cust|
  176. run do
  177. @driver.navigate.to 'blahblahblah'
  178.  
  179. main_tab = @driver.window_handle
  180. page_title
  181.  
  182. @driver.execute_script('window.open()')
  183. @driver.switch_to.window(@driver.window_handles.last)
  184. @driver.navigate.to 'https://getnada.com/'
  185. all_windows = @driver.window_handles
  186. email_tab = @driver.window_handle
  187.  
  188. @driver.switch_to.window(email_tab)
  189. page_title
  190. expect(@driver.title).to eql 'Nada - temp mail - fast and free'
  191. add_inbox.click
  192. wait_for(5) {accept_inbox.displayed?}
  193.  
  194. rescue_exceptions {retry_on_accept_inbox true do
  195. accept_inbox.click
  196. end}
  197.  
  198. String email = email_new.text()
  199.  
  200. @driver.switch_to.window(main_tab)
  201. expect(@driver.title).to eql 'blahblahblah'
  202. page_title
  203.  
  204. @driver.find_element(:css, 'blahblahblah').click
  205.  
  206. puts "Entering data from record #{cust[:RECORDNUM]} @ #{(Time.now.strftime("%m-%d-%Y_%H%M%S"))}"
  207. wait_for(10) {@driver.find_element(id: 'blahblahblah')}
  208. page_title
  209.  
  210. @driver.find_element(name: 'firstname').send_keys cust[:FIRSTNAME]
  211. @driver.find_element(name: 'lastname').send_keys cust[:LASTNAME]
  212. @driver.find_element(name: 'ssn').send_keys cust[:SSN]
  213. @driver.find_element(id: 'blahblahblah').click
  214.  
  215. rescue_exceptions {wait_for(15) {@driver.find_element(name: 'emailSignup').displayed?}}
  216. rescue_exceptions {@driver.find_element(name: 'emailSignup').send_keys(email)}
  217. @driver.find_element(name: 'usernameSignup').send_keys cust[:USERID]
  218. @driver.find_element(name: 'passwordSignup').send_keys cust[:PASSWORD]
  219. @driver.find_element(name: 'passwordConfirmSignup').send_keys cust[:PASSWORD]
  220. enroll_btn.click
  221.  
  222. rescue_exceptions {enroll_btn.click}
  223. puts "Checking for Errors"
  224. wait_for(20) {!enroll_btn.displayed?}
  225.  
  226. @driver.switch_to.window(email_tab)
  227. expect(@driver.title).to eql 'Nada - temp mail - fast and free'
  228. page_title
  229.  
  230. rescue_exceptions {wait_for(10){nada_email.displayed?}}
  231. retry_on_nada_email false do
  232. puts "Checking Nada Email"
  233. case rescue_exceptions {nada_email.displayed?}
  234. when false
  235. puts "No Email found, Refreshing"
  236. @driver.switch_to.window(main_tab)
  237. expect(@driver.title).to eql 'blahblahblah'
  238. page_title
  239. @driver.switch_to.window(email_tab)
  240. expect(@driver.title).to eql 'Nada - temp mail - fast and free'
  241. page_title
  242. when true
  243. puts "Emails found, checking for verification email."
  244. end
  245. end
  246.  
  247. retry_on_wrong_email false do
  248. puts "Checking for Verification Email"
  249. case rescue_exceptions {expect(nada_email.text).to eql 'blahblahblah'}
  250. when false
  251. puts "Verification Email not found, Refreshing"
  252. @driver.switch_to.window(main_tab)
  253. expect(@driver.title).to eql 'blahblahblah'
  254. page_title
  255. @driver.switch_to.window(email_tab)
  256. expect(@driver.title).to eql 'Nada - temp mail - fast and free'
  257. page_title
  258. puts "Refreshed the email page"
  259. when true
  260. puts "Verification Email found"
  261. rescue_exceptions {expect(nada_email.text).to eql 'blahblahblah'}
  262. nada_email.click
  263. wait_for(5) {@driver.find_element(id: 'idIframe').displayed?}
  264. @driver.switch_to.frame('idIframe')
  265. @driver.find_element(:css, 'body > p:nth-child(4) > a').click
  266. end
  267. end
  268.  
  269. @driver.switch_to.window(@driver.window_handles.last)
  270. auth_tab = @driver.window_handle
  271. puts "blahblahblah"
  272.  
  273. @driver.switch_to.window(main_tab)
  274. expect(@driver.title).to eql 'blahblahblah'
  275. page_title
  276. @driver.find_element(:css, 'blahblahblah').click
  277. expect(@driver.title).to eql 'blahblahblah'
  278. page_title
  279.  
  280. @driver.find_element(id: 'username').send_keys cust[:USERID]
  281. puts "user entered"
  282. @driver.find_element(id: 'password').send_keys cust[:PASSWORD]
  283. puts "password entered"
  284. @driver.find_element(:css, 'blahblahblah').click
  285. puts "login information submitted"
  286. puts "Checking for Errors"
  287. rescue_exceptions {wait_for(10) {!login_user.displayed?}}
  288.  
  289. case rescue_exceptions {login_user.displayed?}
  290. when false
  291. expect(rescue_exceptions {login_user.displayed?}).to eql false
  292. puts "blahblahblah"
  293. when true
  294. expect(rescue_exceptions {login_user.displayed?}).to eql true
  295. retry_on_login_err true do
  296. puts "Error found trying to login"
  297. case rescue_exceptions {login_err.displayed?}
  298. when false
  299. puts "No error message found"
  300. break
  301. when true
  302. puts "Error message = #{login_err.text}"
  303. @driver.switch_to.window(email_tab)
  304. expect(@driver.title).to eql 'Nada - temp mail - fast and free'
  305. page_title
  306. rescue_exceptions {expect(nada_email.text).to eql 'blahblahblah'}
  307. nada_email.click
  308. wait_for(5) {@driver.find_element(id: 'idIframe').displayed?}
  309. @driver.switch_to.frame('idIframe')
  310. @driver.find_element(:css, 'body > p:nth-child(4) > a').click
  311.  
  312. @driver.switch_to.window(@driver.window_handles.last)
  313. auth_tab = @driver.window_handle
  314. puts "Enrolled Student Verified"
  315.  
  316. @driver.switch_to.window(main_tab)
  317. expect(@driver.title).to eql 'blahblahblah'
  318. page_title
  319.  
  320. login_user.send_keys cust[:USERID]
  321. puts "user entered"
  322. @driver.find_element(id: 'password').send_keys cust[:PASSWORD]
  323. puts "password entered"
  324. @driver.find_element(:css, 'blahblahblah').click
  325. puts "login information submitted"
  326. puts "Checking for Errors"
  327. rescue_exceptions {wait_for(10) {!login_user.displayed?}}
  328. end
  329. end
  330. end
  331.  
  332. page_title
  333. expect(@driver.title).to eql 'blahblahblah'
  334.  
  335. case rescue_exceptions {digital_consent.displayed?}
  336. when true
  337. expect(rescue_exceptions {digital_consent.displayed?}).to eql true
  338. rescue_exceptions {@driver.find_element(:css, 'blahblahblah').click}
  339. when false
  340. expect(rescue_exceptions {digital_consent.displayed?}).to eql false
  341. end
  342. end
  343. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement