def log_in(driver, login, password): driver.get('http://online.aviso.ua/account2/index.php') if not support.wait_for_load(driver, "#inputEmail", 10): raise NoSuchElementException() support.move_mouse(driver, driver.find_element_by_id('inputEmail')) support.send_text(driver.find_element_by_id('inputEmail'), login) support.move_mouse(driver, driver.find_element_by_id('inputPassword')) support.send_text(driver.find_element_by_id('inputPassword'), password) support.move_mouse(driver, driver.find_element_by_css_selector(".controls button")) if not support.wait_for_load(driver, ".span8 li:nth-child(3) a", 40): raise Exception(ErrorMessage.login)
def test_fn(login, password, driver): driver.get("http://fn.ua/user/") if not support.wait_for_load(driver, "#uemail", 3): return "Nope" support.move_mouse(driver, driver.find_element_by_id("uemail")) support.send_text(driver.find_element_by_id("uemail"), login) support.move_mouse(driver, driver.find_element_by_id("upass")) support.send_text(driver.find_element_by_id("upass"), password) support.move_mouse(driver, driver.find_element_by_name("go_auth")) if not support.wait_for_load(driver, "a[href='/newad/']", 15): return "Nope" return "Yep"
def test_olx(login, password, driver): driver.get("https://ssl.olx.ua/account/") if not support.wait_for_load(driver, "#userEmail", 3): return "Nope" support.move_mouse(driver, driver.find_element_by_id("userEmail")) support.send_text(driver.find_element_by_id("userEmail"), login) support.move_mouse(driver, driver.find_element_by_id("userPass")) support.send_text(driver.find_element_by_id("userPass"), password) support.move_mouse(driver, driver.find_element_by_id("se_userLogin")) if not support.wait_for_load(driver, "#topLoginLink > .arrowthindown", 15): return "Nope" return "Yep"
def log_in(driver, login, password): driver.get("https://ssl.olx.ua/account/") time.sleep(2) if not support.wait_for_load(driver, "#userEmail", 8): raise NoSuchElementException() # authorization ------------------------------------------------------ support.move_mouse(driver, driver.find_element_by_id("userEmail")) support.send_text(driver.find_element_by_id("userEmail"), login) support.move_mouse(driver, driver.find_element_by_id("userPass")) support.send_text(driver.find_element_by_id("userPass"), password) support.move_mouse(driver, driver.find_element_by_id("se_userLogin")) if not support.wait_for_load(driver, "#topLoginLink > .arrowthindown", 15): raise Exception(ErrorMessage.login)
def test_mir(login, password, driver): driver.get("http://mirkvartir.ua/users/login") if not support.wait_for_load(driver, "#user_login", 5): return "Nope" # authorization ------------------------------------------------------ support.move_mouse(driver, driver.find_element_by_id("user_login")) support.send_text(driver.find_element_by_id("user_login"), login) support.move_mouse(driver, driver.find_element_by_id("user_password")) support.send_text(driver.find_element_by_id("user_password"), password) support.move_mouse(driver, driver.find_element_by_id("submit")) time.sleep(2) if not support.wait_for_load(driver, "#add_notice", 15): return "Nope" return "Yep"
def test_aviso(login, password, driver): COUNTER_TIMES = 5 SLEEP_TIME = 1 driver.get("http://online.aviso.ua/account2/index.php") if not support.wait_for_load(driver, "#inputEmail", 10): return "Nope" support.move_mouse(driver, driver.find_element_by_id("inputEmail")) support.send_text(driver.find_element_by_id("inputEmail"), login) support.move_mouse(driver, driver.find_element_by_id("inputPassword")) support.send_text(driver.find_element_by_id("inputPassword"), password) support.move_mouse(driver, driver.find_element_by_css_selector(".controls button")) if not support.wait_for_load(driver, ".span8 li:nth-child(3) a", 40): return "Nope" return "Yep"
def post(self, login, password, driver, write, id): # variables ----------------------------------------- try: adv_type = int(self["adv_type"]) category = int(self["building"][0]) try: subcategory = int(self["building"][1]) + 1 except: subcategory = 0 currency = int(self["currency"]) + 1 if self["type"] == "": house_type = 0 else: house_type = int(self["type"]) + 1 loc1 = int(self["location"][0]) loc2 = 9 - int(self["location"][1]) district = Map_olx_directs[loc1][loc2] if self["location"][2] == "": city = Map_olx_city[loc1][loc2] else: city = self["location"][2] map_address = city + u", Киевская область" except: raise Exception(ErrorMessage.fields) # start -------------------------------------------------- try: log_in(driver, login, password) time.sleep(2) write.publish( "response_" + id, json.dumps({"progress": "25%", "message": PostingMessage.post_p25}) ) # ------------------------message--------------------------- # add ----------------------------------------------------------------- if not support.wait_for_load(driver, "#postNewAdLink", 10): raise NoSuchElementException() support.move_mouse(driver, driver.find_element_by_id("postNewAdLink")) time.sleep(2) # title ---------------------------------------------------------------- if not support.wait_for_load(driver, "#add-title", 10): raise NoSuchElementException() support.move_mouse(driver, driver.find_element_by_id("add-title")) driver.find_element_by_id("add-title").send_keys(self["title"]) time.sleep(2) support.move_mouse(driver, driver.find_element_by_id("targetrenderSelect1-0")) # select catecory ----------------------------------------------------------------------- if not support.wait_for_load(driver, "#cat-1", 15): raise NoSuchElementException() support.move_mouse(driver, driver.find_element_by_id("cat-1")) if not support.wait_for_load( driver, '#category-1 a[data-category="' + chose_flat[adv_type][category] + '"]', 2 ): raise NoSuchElementException() support.move_mouse( driver, driver.find_element_by_css_selector( '#category-1 a[data-category="' + chose_flat[adv_type][category] + '"]' ), ) if support.wait_for_load( driver, "#category-" + chose_flat[adv_type][category] + " li:nth-child(" + str(subcategory) + ")", 2 ): support.move_mouse( driver, driver.find_element_by_css_selector( "#category-" + chose_flat[adv_type][category] + " li:nth-child(" + str(subcategory) + ")" ), ) if not support.wait_for_load(driver, "#parameter-div-price input.text", 10): raise NoSuchElementException() write.publish( "response_" + id, json.dumps({"progress": "50%", "message": PostingMessage.post_p50}) ) # ------------------------message--------------------------- # price ---------------------------------------------- driver.execute_script( "document.getElementById('targetid_private_business').getElementsByTagName('dd')[0].getElementsByTagName('ul')[0].style.display = 'block';" ) support.move_mouse(driver, driver.find_element_by_css_selector("#parameter-div-price input.text")) support.send_text(driver.find_element_by_css_selector("#parameter-div-price input.text"), self["price"]) support.move_mouse(driver, driver.find_element_by_css_selector("#parameter-div-price dl dt a")) support.move_mouse( driver, driver.find_element_by_css_selector("#parameter-div-price dl li:nth-child(" + str(currency) + ")") ) # options ------------------------------------------------------------------------------------- if category in (0, 2): if support.wait_for_load(driver, "#parameter-div-number_of_rooms input", 1): support.move_mouse(driver, driver.find_element_by_css_selector("#parameter-div-number_of_rooms input")) support.send_text( driver.find_element_by_css_selector("#parameter-div-number_of_rooms input"), self["rooms"] ) if support.wait_for_load(driver, "#parameter-div-total_area input", 1): support.move_mouse(driver, driver.find_element_by_css_selector("#parameter-div-total_area input")) support.send_text( driver.find_element_by_css_selector("#parameter-div-total_area input"), self["space"][0] ) if support.wait_for_load(driver, "#parameter-div-total_living_area input", 1): support.move_mouse( driver, driver.find_element_by_css_selector("#parameter-div-total_living_area input") ) support.send_text( driver.find_element_by_css_selector("#parameter-div-total_living_area input"), self["space"][1] ) if support.wait_for_load(driver, "#parameter-div-kitchen_area input", 1): support.move_mouse(driver, driver.find_element_by_css_selector("#parameter-div-kitchen_area input")) support.send_text( driver.find_element_by_css_selector("#parameter-div-kitchen_area input"), self["space"][2] ) if house_type and support.wait_for_load(driver, "#parameter-div-house_type dl dt a", 1): support.move_mouse(driver, driver.find_element_by_css_selector("#parameter-div-house_type dl dt a")) support.move_mouse( driver, driver.find_element_by_css_selector( "#parameter-div-house_type dl li:nth-child(" + str(house_type) + ")" ), ) if support.wait_for_load(driver, "#parameter-div-floor input", 1): support.move_mouse(driver, driver.find_element_by_css_selector("#parameter-div-floor input")) support.send_text(driver.find_element_by_css_selector("#parameter-div-floor input"), self["floor"][0]) if support.wait_for_load(driver, "#parameter-div-total_floors input", 1): support.move_mouse(driver, driver.find_element_by_css_selector("#parameter-div-total_floors input")) support.send_text( driver.find_element_by_css_selector("#parameter-div-total_floors input"), self["floor"][1] ) if support.wait_for_load(driver, "#parameter-div-rent_from input", 1): support.move_mouse(driver, driver.find_element_by_css_selector("#parameter-div-rent_from input")) support.send_text( driver.find_element_by_css_selector("#parameter-div-rent_from input"), self["rent_from"] ) if support.wait_for_load(driver, "#parameter-div-total_rooms_in_flat input", 1): support.move_mouse( driver, driver.find_element_by_css_selector("#parameter-div-total_rooms_in_flat input") ) support.send_text( driver.find_element_by_css_selector("#parameter-div-total_rooms_in_flat input"), self["rooms"] ) if category in (1, 3): support.move_mouse(driver, driver.find_element_by_css_selector("#parameter-div-distance_from_city input")) support.send_text( driver.find_element_by_css_selector("#parameter-div-distance_from_city input"), self["remote"] ) if support.wait_for_load(driver, "#parameter-div-land_area input", 1): support.move_mouse(driver, driver.find_element_by_css_selector("#parameter-div-land_area input")) support.send_text( driver.find_element_by_css_selector("#parameter-div-land_area input"), self["space"][0] ) if support.wait_for_load(driver, "#parameter-div-house_area input", 1): support.move_mouse(driver, driver.find_element_by_css_selector("#parameter-div-house_area input")) support.send_text( driver.find_element_by_css_selector("#parameter-div-house_area input"), self["space"][0] ) if category == 5: support.move_mouse(driver, driver.find_element_by_css_selector("#parameter-div-area input")) support.send_text(driver.find_element_by_css_selector("#parameter-div-area input"), self["space"][0]) # descriptions + personal ------------------------------------------------------------------------ # support.move_mouse(driver, driver.find_element_by_css_selector('#private-business-div dl dt a')) # support.move_mouse(driver, driver.find_element_by_css_selector('#private-business-div dl li:nth-child(2) a')) driver.find_element_by_css_selector("#targetid_private_business dt a").click() driver.find_element_by_css_selector("#private-business-div dl li:nth-child(2) a").click() support.move_mouse(driver, driver.find_element_by_css_selector("#add-description")) driver.find_element_by_css_selector("#add-description").send_keys( self["description"] + " z " + str(int(round(time.time() * 1000))) ) write.publish( "response_" + id, json.dumps({"progress": "75%", "message": PostingMessage.post_p75}) ) # ------------------------message--------------------------- # imeges --------------------------------------------------- support.move_mouse(driver, driver.find_element_by_css_selector("#show-gallery-html")) for idx, val in enumerate(self["img_src"]): if support.wait_for_load(driver, "#htmlbutton_" + str(idx + 1) + " input", 1): driver.find_element_by_css_selector("#htmlbutton_" + str(idx + 1) + " input").send_keys( self["_id"] + val ) # locations -------------------------------------------------------------------------- attempt = 0 while attempt < 5: try: support.move_mouse(driver, driver.find_element_by_css_selector("#mapAddress")) driver.find_element_by_css_selector("#mapAddress").clear() support.send_text_long(driver.find_element_by_css_selector("#mapAddress"), map_address) time.sleep(0.5) if loc1 == 1: if support.wait_for_load(driver, "#autosuggest-geo-ul li:nth-child(1) > a", 2): support.move_mouse( driver, driver.find_element_by_css_selector("#autosuggest-geo-ul li:nth-child(1) > a") ) else: raise Exception(ErrorMessage.location) if loc1 == 0: if support.wait_for_load(driver, "#autosuggest-geo-ul li:nth-child(1) > a", 2): driver.execute_script( 'document.getElementById("autosuggest-geo-ul").getElementsByTagName("li")[0].className = "hover"' ) time.sleep(1) driver.execute_script( 'document.getElementById("autosuggest-geo-ul").getElementsByTagName("li")[0].className = "hover"' ) driver.find_element_by_css_selector( "#autosuggest-geo-ul li:nth-child(1) > .geo-districts-ul li:nth-child(" + str(loc2 + 1) + ") > a" ).click() else: raise Exception(ErrorMessage.location) except: attempt += 1 else: break if attempt >= 5: raise Exception(ErrorMessage.location) # phone + skype + name ---------------------------------------------------------------------- support.move_mouse_dc(driver, driver.find_element_by_css_selector("#add-person")) support.send_text(driver.find_element_by_css_selector("#add-person"), self["per_name"]) support.move_mouse_dc(driver, driver.find_element_by_css_selector("#add-phone")) support.send_text(driver.find_element_by_css_selector("#add-phone"), self["per_telephone"]) support.move_mouse_dc(driver, driver.find_element_by_css_selector("#add-skype")) support.send_text(driver.find_element_by_css_selector("#add-skype"), self["skype"]) write.publish( "response_" + id, json.dumps({"progress": "100%", "message": PostingMessage.post_p100}) ) # ------------------------message--------------------------- # save+screenshot------------------------------------------------------------- driver.save_screenshot(self["_id"] + "report_olx_ua.png") time.sleep(2) write.publish( "response_" + id, json.dumps({"progress": "100%", "message": PostingMessage.rander(self["_id"] + "report_olx_ua.png")}), ) attempt = 0 while attempt < 5: try: driver.find_element_by_css_selector("#save").click() time.sleep(4) if not support.wait_for_load(driver, "#addAnotherAd", 20): driver.save_screenshot(self["_id"] + "report_olx_ua.png") logout(driver) raise Exception(ErrorMessage.wrong) driver.save_screenshot(self["_id"] + "report_olx_ua.png") break except: attempt += 1 logout(driver) except NoSuchElementException, InvalidElementStateException: driver.save_screenshot(self["_id"] + "report_olx_ua.png") logout(driver) raise Exception(ErrorMessage.change)
def post(self, login, password, driver, write, id): COUNT_TIMES = 10 try: log_in(driver, login, password) time.sleep(2) per_tel = self['per_telephone'][1:] write.publish("response_" + id, json.dumps({"progress": "25%","message": PostingMessage.post_p25}))#------------------------message--------------------------- support.move_mouse(driver, driver.find_element_by_css_selector(".span8 li:nth-child(3) a")) if not support.wait_for_load(driver, ".form-horizontal label:nth-child(1)", 20): driver.save_screenshot(self["_id"] + 'report_aviso.png') logout(driver) raise NoSuchElementException() support.move_mouse(driver, driver.find_element_by_css_selector(".form-horizontal label:nth-child(1)")) support.move_mouse(driver, driver.find_element_by_css_selector(".form-horizontal button")) n1 = choose_section[int(self["adv_type"])][int(self["building"][0])] #if self["adv_type"] == '0' and self["building"][0] in ('0', '2') and self["building"][1] == '2': # n1 = '4' n2 = 1 if self["building"][0] in ('1','3'): n2 = int(self["building"][0]) if self["building"][0] == '3': n2 = 2 if self["location"][0] == '0': n3 = int(self["location"][1]) + 1 else: n3 = int(self["location"][1]) + 12 if n3 > 36 - 25 * (1 ^ int(self["adv_type"])): n3 = 37 - 26 * (1 ^ int(self["adv_type"])) n4 = currency[int(self["currency"])] n5 = (int(self["rooms"]) + 1) if self['rooms'] != '' else 0 print n5 if n5 > 6: n5 = 6 if not support.wait_for_load(driver, ".form-horizontal label:nth-child(" + n1 + ")", 10): driver.save_screenshot(self["_id"] + 'report_aviso.png') logout(driver) raise NoSuchElementException() support.move_mouse(driver, driver.find_element_by_css_selector(".form-horizontal label:nth-child(" + n1 + ")")) support.move_mouse(driver, driver.find_element_by_css_selector(".form-horizontal button[type='submit']")) if not support.wait_for_load(driver, ".form-horizontal label:nth-child(" + str(n2) + ")", 10): driver.save_screenshot(self["_id"] + 'report_aviso.png') logout(driver) raise NoSuchElementException() support.move_mouse(driver, driver.find_element_by_css_selector(".form-horizontal label:nth-child(" + str(n2) + ")")) support.move_mouse(driver, driver.find_element_by_css_selector(".form-horizontal button[type='submit']")) write.publish("response_" + id, json.dumps({"progress": "50%","message": PostingMessage.post_p50}))#------------------------message--------------------------- if not support.wait_for_load(driver, "input[name='ad_title']", 20): driver.save_screenshot(self["_id"] + 'report_aviso.png') logout(driver) raise NoSuchElementException() support.move_mouse(driver, driver.find_element_by_css_selector("input[name='ad_title']")) support.send_text(driver.find_element_by_css_selector('input[name="ad_title"]'), self["title"]) support.move_mouse(driver, driver.find_element_by_css_selector("textarea[name='ad_text']")) support.send_text(driver.find_element_by_css_selector('textarea[name="ad_text"]'), self["description"]) if support.wait_for_load(driver, '#adDistrict', 2): support.move_mouse(driver, driver.find_element_by_css_selector('#adDistrict')) driver.find_element_by_css_selector('#adDistrict option[value="' + str(n3) + '"]').click() support.move_mouse(driver, driver.find_element_by_css_selector("input[name='ad_price']")) support.send_text(driver.find_element_by_css_selector('input[name="ad_price"]'), self["price"]) support.move_mouse(driver, driver.find_element_by_css_selector("select[name='ad_currency']")) driver.find_element_by_css_selector('select[name="ad_currency"] option[value="' + str(n4) + '"]').click() if self["building"][0] == '0': support.move_mouse(driver, driver.find_element_by_xpath("//*[@id='adRooms']")) driver.find_element_by_css_selector('#adRooms option:nth-child(' + str(n5) + ')').click() support.move_mouse(driver, driver.find_element_by_css_selector("input[name='space_all']")) support.send_text(driver.find_element_by_css_selector('input[name="space_all"]'), self["space"][0]) support.move_mouse(driver, driver.find_element_by_css_selector("input[name='space_live']")) support.send_text(driver.find_element_by_css_selector('input[name="space_live"]'), self["space"][1]) support.move_mouse(driver, driver.find_element_by_css_selector("input[name='space_kitch']")) support.send_text(driver.find_element_by_css_selector('input[name="space_kitch"]'), self["space"][2]) support.move_mouse(driver, driver.find_element_by_css_selector("input[name='floor']")) support.send_text(driver.find_element_by_css_selector('input[name="floor"]'), self["floor"][0]) support.move_mouse(driver, driver.find_element_by_css_selector("input[name='floors']")) support.send_text(driver.find_element_by_css_selector('input[name="floors"]'), self["floor"][1]) if self["building"][0] == '1': support.move_mouse(driver, driver.find_element_by_css_selector("input[name='space_all']")) support.send_text(driver.find_element_by_css_selector('input[name="space_all"]'), self["space"][0]) if self["adv_type"] == '1': support.move_mouse(driver, driver.find_element_by_css_selector("input[name='space_live']")) support.send_text(driver.find_element_by_css_selector('input[name="space_live"]'), self["space"][1]) support.move_mouse(driver, driver.find_element_by_css_selector("input[name='floors']")) support.send_text(driver.find_element_by_css_selector('input[name="floors"]'), self["floor"][1]) if self["building"][0] == '3': support.move_mouse(driver, driver.find_element_by_css_selector("input[name='space_all']")) support.send_text(driver.find_element_by_css_selector('input[name="space_all"]'), self["space"][0]) write.publish("response_" + id, json.dumps({"progress": "75%","message": PostingMessage.post_p75}))#------------------------message--------------------------- support.move_mouse(driver, driver.find_element_by_css_selector("input[name='op_code1']")) support.send_text(driver.find_element_by_css_selector('input[name="op_code1"]'), per_tel[:2]) support.move_mouse(driver, driver.find_element_by_css_selector("input[name='phone_num1']")) support.send_text(driver.find_element_by_css_selector('input[name="phone_num1"]'), per_tel[2:9]) support.move_mouse(driver, driver.find_element_by_css_selector("#inputContact")) support.send_text(driver.find_element_by_css_selector('#inputContact'), self["per_name"]) support.move_mouse(driver, driver.find_element_by_css_selector(".form-horizontal button[type='submit']")) if not support.wait_for_load(driver, "input[type='file']", 40): raise NoSuchElementException() driver.save_screenshot(self["_id"] + 'report_aviso.png') logout(driver) for src in self["img_src"]: try: support.send_text(driver.find_element_by_css_selector("input[type='file']"), self["_id"] + src) support.move_mouse(driver, driver.find_element_by_css_selector("input[type='submit']")) except: time.sleep(5) if not support.wait_for_load(driver, ".btn-large", 10): driver.save_screenshot(self["_id"] + 'report_aviso.png') logout(driver) raise NoSuchElementException() support.move_mouse(driver, driver.find_element_by_css_selector(".btn-large")) if not support.wait_for_load(driver, ".btn-warning", 10): driver.save_screenshot(self["_id"] + 'report_aviso.png') logout(driver) raise NoSuchElementException() support.move_mouse(driver, driver.find_element_by_css_selector(".btn-warning")) print "Done!" write.publish("response_" + id, json.dumps({"progress": "100%","message": PostingMessage.post_p100})) #------------------------message--------------------------- write.publish("response_" + id, json.dumps({"progress": "100%","message": PostingMessage.rander(self["_id"] + 'report_aviso.png')})) logout(driver) except NoSuchElementException, InvalidElementStateException: #driver.save_screenshot(self[self["_id"]] + 'report_mirkvartir.png') driver.save_screenshot(self["_id"] + 'report_aviso.png') logout(driver) print 'picture' raise Exception(ErrorMessage.change)