def getJobSearchResults(browser): BO.waitForElementLocated(browser, 'apply', how='class') page_results = browser.find_elements_by_class_name('apply') results = [] for item in page_results: results.append(item) return results
def getBlockJobs(browser, block='Technology'): allowed = ['Technology'] browser.get(MAINURL) BO.waitForElementLocated(browser, block, how='link') if block in allowed: element = browser.find_element_by_link_text(block) browser.get(element.get_attribute('href'))
def searchForJobs(): BO.waitForElementLocated(browser, "edit-search-0", how='id') BO.waitForElementLocated(browser, "edit-location-0", how='id') kw = browser.find_element_by_id("edit-search-0") loc = browser.find_element_by_id("edit-location-0") kw.send_keys(search) loc.send_keys(location) loc.send_keys(Keys.RETURN)
def getJobSearchResults(browser): pathLocator = "//div/h2/a" BO.waitForElementLocated(browser, pathLocator, how='xpath') page_results = browser.find_elements_by_xpath(pathLocator) results = [] for item in page_results: results.append(item) return results
def getContractType(browser, identifier): BO.waitForElementLocated(browser, identifier, how='class') elements = browser.find_elements_by_class_name(identifier) for element in elements: ele = element.find_element_by_xpath( './/span[@class = "summary-detail-field-label"]') if ele.text == 'Contract Type:': el = element.find_element_by_xpath( './/span[@class = "summary-detail-field-value"]') return el.text
def getJobSearchResults(browser): firstLocator = "jobs" BO.waitForElementLocated(browser, firstLocator, how='class') superElement = browser.find_element_by_class_name(firstLocator) locator = "job-link" BO.waitForElementLocated(browser, locator, how='class') page_results = superElement.find_elements_by_class_name(locator) results = [] for item in page_results: results.append(item) return results
def loginToSite(browser, us): BO.waitForElementLocated( browser, 'CPHMain_CPHContent_CandidateLogin1_Login1_UserName', how='id') email = browser.find_element_by_id( 'CPHMain_CPHContent_CandidateLogin1_Login1_UserName') email.send_keys(us.username['GMail']) pw = browser.find_element_by_id( 'CPHMain_CPHContent_CandidateLogin1_Login1_Password') pw.send_keys(us.password['GMail']) browser.execute_script( "document.getElementById('CPHMain_CPHContent_CandidateLogin1_Login1_LoginButton').click();" )
def applyThroughCV(browser, us): BO.waitForElementLocated(browser, 'JOBG811', how='id') fn = browser.find_element_by_id('JOBG82') ln = browser.find_element_by_id('JOBG83') email = browser.find_element_by_id('JOBG811') fn.send_keys(us.personal['firstName']) ln.send_keys(us.personal['lastName']) email.send_keys(us.personal['email']) BO.waitForElementLocated(browser, 'chkPrefill', how='id') browser.execute_script("document.getElementById('chkPrefill').click();") element = browser.find_element_by_id('JOBG810019') element.find_element_by_xpath("//option[text()='Yes']").click() browser.find_element_by_id('JOBG837').send_keys(us.personal['CVPath']) time.sleep(3) browser.execute_script("document.getElementById('buttonApply').click();") time.sleep(2)
def getJobDetails(browser): details = {} BO.waitForElementLocated(browser, 'searchContainer', how='class') masterElement = browser.find_element_by_class_name('searchContainer') name = masterElement.find_element_by_class_name("searchTitle") details['jobName'] = name.text #there are 2 search specifics: #1st contains company - 0 and location - 1 #2nd contains reference - 3, contact - 1 and type - 0 (2 is date of publication) BO.waitForElementLocated(browser, 'searchSpecifics', how='class') elements = masterElement.find_elements_by_class_name('searchSpecifics') details['reference'] = getDetail(elements[1], 'Referencia') details['contact'] = getDetail(elements[1], 'Contato') details['location'] = elements[0].find_elements_by_class_name('searchRightCol')[1].text details['company'] = elements[0].find_elements_by_class_name('searchRightCol')[0].text#getDetail(elements[0], 'Anunciante') details['type'] = getDetail(elements[1], 'Tipo de emprego') return details
def getBlockJobsAndApply(): us = User('f') if os.path.isfile(us.personal['LogPathJobsInGeneva']): reflst = DL.getReferencesFromLog(us.personal['LogPathJobsInGeneva']) else: reflst = set() #here, unlike in pagepersonnel, the mainurl #contains already every job browser = BO.openNewBrowser(MAINURL) #we are now in page 1 of the results #for each page I wish to apply to every job applyToAllUrls(browser, reflst, us) while BO.isElementPresent(browser,'Next', 'link'): element = browser.find_element_by_link_text('Next') url = element.get_attribute('href') browser.get(url) applyToAllUrls(browser, reflst, us) time.sleep(2) time.sleep(5)
def applyThroughCV(browser, us): BO.waitForElementLocated(browser, 'apply-with-cv-link', how='id') browser.execute_script( "document.getElementById('apply-with-cv-link').click();") fn = browser.find_element_by_id('edit-firstname') ln = browser.find_element_by_id('edit-lastname') tp = browser.find_element_by_id('edit-telephone') email = browser.find_element_by_id('edit-email') fn.send_keys(us.personal['firstName']) ln.send_keys(us.personal['lastName']) tp.send_keys(us.personal['telephone']) email.send_keys(us.personal['email']) browser.find_element_by_id( 'edit-field-3rd-party-file-upload-und-0').send_keys( us.personal['CVPath']) #works! browser.execute_script( "document.getElementsByClassName('option')[0].click();") time.sleep(3) browser.execute_script("document.getElementById('edit-submit').click();")
def applyToAllUrls(browser, reflst, us): jobsearchurl = browser.current_url res = getJobSearchResults(browser) links = BO.getLinksFromElements(res) for link in links: browser.get(link) # we must verify that the page is the standard application page # neither is from indeed, or a vacancy completed or forbiden if BO.isElementPresent(browser,'searchContainer'): #if this element is present, we are in the correct page details = getJobDetails(browser) details['path'] = us.personal['LogPathJobsInGeneva'] if str(details['reference']) not in reflst: applyToJob(browser, us) details['method'] = 'CV' DL.writeLogToCSV(details) reflst.add(details['reference']) time.sleep(2) browser.get(jobsearchurl) time.sleep(3)
def getBlockJobsAndApply(): us = User('f') if os.path.isfile(us.personal['LogPathPagePersonnel']): reflst = DL.getReferencesFromLog(us.personal['LogPathPagePersonnel']) else: reflst = set() browser = BO.openNewBrowser(MAINURL) getBlockJobs(browser, 'Technology') toggleFilters(browser) selectLanguage(browser) #we are now in page 1 of the results #for each page I wish to apply to every job applyToAllUrls(browser, reflst, us) while BO.isElementPresent(browser, 'show-more-pager'): element = browser.find_element_by_class_name('show-more-pager') element = element.find_element_by_tag_name('a') url = element.get_attribute('href') browser.get(url) applyToAllUrls(browser, reflst, us) time.sleep(2) time.sleep(5)
def getBlockJobsAndApply(): us = User('f') if os.path.isfile(us.personal['LogPathExperis']): reflst = DL.getReferencesFromLog(us.personal['LogPathExperis']) else: reflst = set() browser = BO.openNewBrowser(MAINURL) #we are now in page 1 of the results #for each page I wish to apply to every job applyToAllUrls(browser, reflst, us) BO.waitForElementLocated(browser, 'pagingHeader_lnkNextPageItem', how='id', delay=30) #BUG : TODO while BO.isElementPresent(browser, 'pagingHeader_lnkNextPageItem', how='id'): browser.execute_script( "document.getElementById('pagingHeader_lnkNextPageItem').click();") applyToAllUrls(browser, reflst, us) time.sleep(2) time.sleep(10)
def applyThroughWebSite(browser, us): if BO.isElementPresent( browser, 'CPHMain_CPHContent_CandidateLogin1_Login1_UserName', how='id'): loginToSite(browser, us) BO.waitForElementLocated( browser, 'ctl00_CPHMain_CPHContent_AsyncFileUploader_RadAsyncUpload1file0', how='id') browser.find_element_by_id( 'ctl00_CPHMain_CPHContent_AsyncFileUploader_RadAsyncUpload1file0' ).send_keys(us.personal['CVPath']) browser.execute_script( "document.getElementById('CPHMain_CPHContent_rdoCandidateFiles_4').click();" ) with open(us.personal['CoverText1'], 'r') as myfile: data = myfile.read() browser.find_element_by_id('CPHMain_CPHContent_txtCoverNote').send_keys( data) time.sleep(2) browser.execute_script( "document.getElementById('CPHMain_CPHContent_btnSubmit').click();")
def applyToAllUrls(browser, reflst, us): jobsearchurl = browser.current_url res = getJobSearchResults(browser) links = BO.getLinksFromElements(res) for link in links: browser.get(link) details = getJobDetails(browser) details['path'] = us.personal['LogPathPagePersonnel'] if str(details['reference']) not in reflst: applyToJob(browser, us) details['method'] = 'CV' DL.writeLogToCSV(details) reflst.add(details['reference']) browser.get(jobsearchurl) time.sleep(3)
def applyThroughLinkedIn(browser, us): BO.waitForElementLocated(browser, 'linkedin-form-apply', how='class') ele = browser.find_element_by_class_name('linkedin-form-apply') BO.waitForElementLocated(browser, 'a', how='tag') el = ele.find_element_by_tag_name('a') browser.get(el.get_attribute('href')) loginLinkedIn(browser, us) BO.waitForElementLocated(browser, "edit-telephone") tel = browser.find_element_by_id('edit-telephone') tel.send_keys(us.personal['telephone']) browser.execute_script( "document.getElementById('edit-privacy-data-2').click();") browser.execute_script("document.getElementById('edit-submit').click();")
def loginLinkedIn(browser, us): BO.waitForElementLocated(browser, "session_key-oauth2SAuthorizeForm") credentials = us.getAppCredentials('LinkedIn') elements = ("session_key-oauth2SAuthorizeForm", "session_password-oauth2SAuthorizeForm") BO.login(browser, elements, credentials)
def getDetail(browser, identifier): BO.waitForElementLocated(browser, identifier, how='class') ele = browser.find_element_by_class_name(identifier) return ele.text
def toggleFilters(browser): ID = "browse-filter-toggle" BO.waitForElementLocated(browser, ID) ele = browser.find_element_by_id(ID) ele.click()
def selectLanguage(browser, language='English'): BO.waitForElementLocated(browser, language, how='link') ele = browser.find_element_by_link_text(language) browser.get(ele.get_attribute('href'))