Git Product home page Git Product logo

c-vpo's Introduction

C-VPO - The CV Post Office

Automated Resumé Submission Engine

N.B. This project is intended as a productivity tool, not for abuse of systems. This is one reason for using slower tests that simulate user input.

These scripts are presented as is and without warranty of any kind.

By using these scripts you agree that the author(s) shall not be held liable for damages of any nature, and accept full responsibility for their usage. If you don't understand them, don't use them.

Don't be scared - the scripts aren't considered dangerous or abusive. The worst that could likely happen is a job site provider could be mildly peeved and suspend your account.

Requirements

Node.js

NPM

Install Chromedriver from https://googlechromelabs.github.io/chrome-for-testing/ Be sure to add path to chromedriver file to your PATH variable. Instruction on doing this for your operating system can be found online.

Be sure to keep Chromedriver up to date with your Chrome version If you get this error it may be due to an out of date Chromedriver Error: ECONNREFUSED connect ECONNREFUSED 127.0.0.1:50472 If you have recently updated to the latest version of Chrome, a compatible version of webdriver may not be available yet. The Webdriver version should match the Chrome version number.

Install

Clone the repo from GitHub, enter the project directory and run

$ npm install

Config

Supported sites are configured in sites.json - Nomenclature be haaaard...

Copy or rename users_sample.json to users.json and add your details, including the path to your CV - users.json is ignored by Git, so will not be uploaded to a repo, exposing your security info to the world.

As you will be keeping these passwords in a plain text file, it is HIGHLY recommended that you do NOT reuse any of the passwords for the jobsites, and you should encrypt your disk. Support for password managers obviating the need for these details to be stored is considered for the future. (It's a wishlist item, don't hold your breath)

Run

Will submit CV to sites in provided scripts. Tests will inform you of failures in the event of UI changes - screenshots will be dumped in /screenshots

$ npm start

Errors

Sometimes a test will fail because the site isn't responding - to re-run a single test (e.g. cwjobs):

$ npm start features/cwjobs.co.uk.feature

Cucumber support files lifted from https://github.com/Matt-B/cucumber-js-selenium-webdriver-example

Submissions and amendments

Please fork this repo and submit pull requests. Each additional site should be in its own feature branch.

Currently Supported sites

Retired sites

Discussion

https://www.facebook.com/groups/autoresumesubmitengine/

License

This is a GNU GPLv3 licensed project

c-vpo's People

Contributors

dependabot[bot] avatar disasterman78 avatar rk295 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

c-vpo's Issues

jobsite.co.uk: "CV_FAILURE.Web service access error" on upload

Cucumber output:

✖ Then I wait for the "upload success" page to load
  - And the page should say "success"

Failures:

1) Scenario: Load site and login - features/jobsite.co.uk.feature:3
   Step: Then I wait for the "upload success" page to load - features/jobsite.co.uk.feature:18
   Step Definition: features/stepdefinitions/generic.steps.js:124

Sometimes Jobsite doesn't upload successfully. I saw this once when writing the feature, but it cleared up on the next run. Today it seems to be persistent.

The page that loads gives the following error:

Error

We could not process your request because:-

CV_FAILURE. Web service access error

Totaljobs.com & cwjobs.co.uk blocking automated browsers

It appears these sites have decided they don't like automated browsers. It was inevitable that someone would cotton on, most likely due to bad actors automating job postings, which is a shame, as c-vpo is not intended to be abusive at all, just a time saver.

Both sites appear to use the same mechanism. Any access with Chromedriver gets the same 'permission denied' response. The sites work fine from Chrome as normal.

cv-library.co.uk - file is not submitted

Steps complete and no error is shown, but file is not uploaded.

cv-library has a new upload system with a custom select input to choose file source, it doesn't play nice with Selenium.
Clicking 'Device' from the select options should trigger the file dialogue.
I thought I'd got it working, but evidently not (CV hadn't been updated for far too long, dammit. I get quite a lot of interest from that site normally).

jobsite.co.uk 'Then I click the "edit cv" button': WebDriverError: unknown error: 'value' must be a string

   Step: Then I click the "edit cv" button - features/jobsite.co.uk.feature:15
   Step Definition: features/stepdefinitions/generic.steps.js:98
   Message:
     WebDriverError: unknown error: 'value' must be a string
       (Session info: chrome=58.0.3029.110)
       (Driver info: chromedriver=2.28.455517 (2c6d2707d8ea850c862f04ac066724273981e88f),platform=Mac OS X 10.12.2 x86_64)
         at Object.checkLegacyResponse (/Users/davidbenson/Sites/c-vpo/node_modules/selenium-webdriver/lib/error.js:517:15)
         at parseHttpResponse (/Users/davidbenson/Sites/c-vpo/node_modules/selenium-webdriver/lib/http.js:516:11)
         at doSend.then.response (/Users/davidbenson/Sites/c-vpo/node_modules/selenium-webdriver/lib/http.js:432:13)
         at process._tickCallback (internal/process/next_tick.js:103:7)
     From: Task: WebDriver.findElement(By(css selector, undefined))
         at thenableWebDriverProxy.schedule (/Users/davidbenson/Sites/c-vpo/node_modules/selenium-webdriver/lib/webdriver.js:816:17)
         at thenableWebDriverProxy.findElement (/Users/davidbenson/Sites/c-vpo/node_modules/selenium-webdriver/lib/webdriver.js:1023:17)
         at World.<anonymous> (/Users/davidbenson/Sites/c-vpo/features/stepdefinitions/generic.steps.js:132:35)
         at _combinedTickCallback (internal/process/next_tick.js:67:7)
         at process._tickCallback (internal/process/next_tick.js:98:9)
     From: Task: WebDriver.executeScript()
         at thenableWebDriverProxy.schedule (/Users/davidbenson/Sites/c-vpo/node_modules/selenium-webdriver/lib/webdriver.js:816:17)
         at thenableWebDriverProxy.executeScript (/Users/davidbenson/Sites/c-vpo/node_modules/selenium-webdriver/lib/webdriver.js:887:16)
         at World.<anonymous> (/Users/davidbenson/Sites/c-vpo/features/stepdefinitions/generic.steps.js:137:28)
         at _combinedTickCallback (internal/process/next_tick.js:67:7)
         at process._tickCallback (internal/process/next_tick.js:98:9)```

cvlibrary and monster need updating

I have received unconfirmed reports that some sites may have been updated and require new steps to complete.

Anyone wants to fix them and create a PR, please do as I'm on contract so it's not my top priority.

jobserve.com is not working

Tried this morning, see this error:


> [email protected] start /Users/robin/GIT/rk295/c-vpo
> cucumber-js "features/jobserve.com.feature"

Feature: jobserve.com CV upload

  Scenario: Load site and login
  ✔ Given I am using the data for "jobserve.com"
  ✔ And I visit the "login" page
  ✔ And I click the "allow cookies" button
  ✔ Then the page should have a login form
  ✔ And I should be able to enter my "username"
  ✔ And I should be able to enter my "password"
  ✔ And I should be able to submit the "login" form
  ✔ Then I wait for the "candidate home" page to load
  ✔ Then I click the "CVs tab" button
  ✔ And I wait for the "CV tab content" page to load
  ✔ And I hover on "actions element"
  ✔ And I click the "remove document" button
  ✖ Then I wait for the "confirm delete" page to load
  - And the page should say "are you sure"
  - Then I click the "confirm delete" button
  - And I wait for the "candidate home" page to load
  - Then I click the "CVs tab" button
  - And I wait for the "CV tab content" page to load
  - Then I click the "upload cv" button
  - Then I wait for the "upload cv" page to load
  - Then I should be able to add my CV
  - And I should be able to submit the "cv" form
  - Then I wait for the "candidate home" page to load

Failures:

1) Scenario: Load site and login - features/jobserve.com.feature:8
   Step: Then I wait for the "confirm delete" page to load - features/jobserve.com.feature:25
   Step Definition: features/stepdefinitions/generic.steps.js:145
   Message:
     TimeoutError: Waiting for element to be located By(css selector, #divConfirm #ConfirmButton)
     Wait timed out after 20000ms
         at /Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:2201:17
         at ManagedPromise.invokeCallback_ (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:1376:14)
         at TaskQueue.execute_ (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:3084:14)
         at TaskQueue.executeNext_ (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:3067:27)
         at asyncRun (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:2927:27)
         at /Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:668:7
         at processTicksAndRejections (internal/process/next_tick.js:81:5)
     From: Task: Waiting for element to be located By(css selector, #divConfirm #ConfirmButton)
         at scheduleWait (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:2188:20)
         at ControlFlow.wait (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:2517:12)
         at thenableWebDriverProxy.wait (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/webdriver.js:934:29)
         at World.waitFor (/Users/robin/GIT/rk295/c-vpo/features/support/world.js:65:19)
         at World.<anonymous> (/Users/robin/GIT/rk295/c-vpo/features/stepdefinitions/generic.steps.js:185:14)

1 scenario (1 failed)
23 steps (1 failed, 10 skipped, 12 passed)
0m27.460s
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `cucumber-js "features/jobserve.com.feature"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/robin/.npm/_logs/2019-03-29T13_17_19_026Z-debug.log

I'll dig a bit more if time permits.

monster.co.uk

Cucumber output:

  ✖ Then I should be able to add my CV
  - And I wait for the "upload success" page to load

Failures:

1) Scenario: Load site and login - features/monster.co.uk.feature:3
   Step: Then I should be able to add my CV - features/monster.co.uk.feature:23
   Step Definition: features/stepdefinitions/generic.steps.js:86
   Message:
     function timed out after 60000 milliseconds

1 scenario (1 failed)
13 steps (1 failed, 1 skipped, 11 passed)

The CV uploads, and the CV settings page loads, but the 'add my CV' step doesn't complete - maybe because Monster auto-submits on file input change.

This worked fine when the feature was added.

cwjobs.co.uk not working

Produces the following error:

> [email protected] start /Users/robin/GIT/rk295/c-vpo
> cucumber-js "features/cwjobs.co.uk.feature"

Feature: cwjobs.co.uk CV upload

  Scenario: Load site and login
  ✔ Given I am using the data for "cwjobs.co.uk"
  ✔ And I visit the "login" page
  ✔ Then the page should have a login form
  ✖ And I should be able to enter my "username"
  - And I should be able to enter my "password"
  - And I should be able to submit the "login" form
  - Given I visit the "cv" page
  - Then I should be able to add my CV
  - And I should be able to submit the "cv" form

Failures:

1) Scenario: Load site and login - features/cwjobs.co.uk.feature:3
   Step: And I should be able to enter my "username" - features/cwjobs.co.uk.feature:7
   Step Definition: features/stepdefinitions/generic.steps.js:52
   Message:
     TypeError: Cannot read property 'username' of undefined
         at World.<anonymous> (/Users/robin/GIT/rk295/c-vpo/features/stepdefinitions/generic.steps.js:67:71)
         at processTicksAndRejections (internal/process/next_tick.js:74:9)

1 scenario (1 failed)
9 steps (1 failed, 5 skipped, 3 passed)
0m03.582s
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `cucumber-js "features/cwjobs.co.uk.feature"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/robin/.npm/_logs/2019-03-29T13_08_07_588Z-debug.log

Jobserve actions element is incorrect.

The actions element on job serve changes when you have 1 CV already uploaded, and when you have more than one CV uploaded.

If you have more then one CV uploaded, then the action element is correct, but if you have only one CV uploaded, then the element "#CVScroll .fauxlink". doesn't exist on the page.

Additionally, there are now two file upload boxes on the upload CV page, so the Ids' have changed.

totaljobs.com not working

Another one is failing:


> [email protected] start /Users/robin/GIT/rk295/c-vpo
> cucumber-js "features/totaljobs.com.feature"

Feature: totaljobs.com CV upload

  Scenario: Load site and login
  ✔ Given I am using the data for "totaljobs.com"
  ✔ And I visit the "login" page
  ✔ Then the page should have a login form
  ✔ And I should be able to enter my "username"
  ✔ And I should be able to enter my "password"
  ✔ And I should be able to submit the "login" form
  ✔ Given I visit the "cv" page
  ✖ Then I should be able to add my CV
  - And I should be able to submit the "cv" form

Failures:

1) Scenario: Load site and login - features/totaljobs.com.feature:3
   Step: Then I should be able to add my CV - features/totaljobs.com.feature:13
   Step Definition: features/stepdefinitions/generic.steps.js:90
   Message:
     TimeoutError: Waiting for element to be located By(css selector, #candidateProfileDetails_cvUpload_filCVUploadFile)
     Wait timed out after 20001ms
         at /Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:2201:17
         at ManagedPromise.invokeCallback_ (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:1376:14)
         at TaskQueue.execute_ (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:3084:14)
         at TaskQueue.executeNext_ (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:3067:27)
         at asyncRun (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:2927:27)
         at /Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:668:7
         at processTicksAndRejections (internal/process/next_tick.js:81:5)
     From: Task: Waiting for element to be located By(css selector, #candidateProfileDetails_cvUpload_filCVUploadFile)
         at scheduleWait (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:2188:20)
         at ControlFlow.wait (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/promise.js:2517:12)
         at thenableWebDriverProxy.wait (/Users/robin/GIT/rk295/c-vpo/node_modules/selenium-webdriver/lib/webdriver.js:934:29)
         at World.waitFor (/Users/robin/GIT/rk295/c-vpo/features/support/world.js:65:19)
         at World.<anonymous> (/Users/robin/GIT/rk295/c-vpo/features/stepdefinitions/generic.steps.js:92:14)

1 scenario (1 failed)
9 steps (1 failed, 1 skipped, 7 passed)
0m25.256s
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] start: `cucumber-js "features/totaljobs.com.feature"`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] start script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/robin/.npm/_logs/2019-03-29T13_19_09_814Z-debug.log

Again I'll dig if I get time! :)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.