Automatically detect and fill registration forms for testing purposes.
Autoregister is a Python library that helps automate the process of filling out registration forms on websites. It uses machine learning (via formasaurus) to detect form fields and intelligently fills them with appropriate test data.
- Automatic Field Detection: Uses formasaurus to extract and classify form fields
- Smart Field Filling: Detects field types (email, password, name, etc.) and fills with appropriate values
- Multiple Usage Modes:
- Get filled form data for use with Selenium/browser automation
- Get form data as POST dictionary for HTTP requests
- Automatically submit forms via HTTP POST
- Flexible Input: Works with either HTML content or URLs
pip install -r requirements.txtfrom registration_form_filler import RegistrationFormFiller
# Create a filler from a URL
filler = RegistrationFormFiller(url='https://example.com/register')
# Fill the form
form_data = filler.fill_form()
print(form_data)from selenium import webdriver
from registration_form_filler import RegistrationFormFiller
# Get the page
browser = webdriver.Firefox()
browser.get('https://example.com/register')
html = browser.page_source
# Fill the form
filler = RegistrationFormFiller(html_in=html)
form_data = filler.fill_form()
# Submit using Selenium
for field in form_data:
if 'value' in field and 'xpath' in field:
element = browser.find_element_by_xpath(field['xpath'])
element.send_keys(field['value'])from registration_form_filler import RegistrationFormFiller
# Create and fill the form
filler = RegistrationFormFiller(url='https://example.com/register')
filler.fill_form()
# Get as POST data
post_data = filler.get_form_as_post_data()
print(post_data) # {'email': 'test@example.com', 'password': 'secret123', ...}
# Or submit directly
response = filler.submit_form(base_url='https://example.com')
print(response.status_code)from registration_form_filler import RegistrationFormFiller
html = '''
<form action="/register" method="post">
<input name="email" type="email" />
<input name="password" type="password" />
<input type="submit" value="Register" />
</form>
'''
filler = RegistrationFormFiller(html_in=html)
form_data = filler.fill_form()The repository includes two demo spiders that show complete registration workflows:
demo_spider_1.py: Basic registration automation with Seleniumdemo_spider_2.py: Advanced registration with CAPTCHA solving and email verification
Main class for filling registration forms.
__init__(html_in=None, url=None): Initialize with HTML content or URLfill_form(): Detect and fill form fields, returns list of field dataget_form_as_post_data(): Get filled form as dictionary for POST requestssubmit_form(base_url=None): Submit the form via HTTP POSTprepare_registration_form(): Prepare form data in RegistrationForm object
Class representing a filled registration form.
__init__(**kwargs): Initialize empty formadd_attribute(name, value): Add a field to the formget_as_raw_post(): Get form data as dictionary for POST requests
The library automatically detects the following field types:
- Email fields
- Email confirmation fields
- Password fields
- Password confirmation fields
- Name fields
Detection is based on field names and placeholder text using a keyword dictionary that can be customized.
The library uses the following default values for testing:
- Email:
blabhalbhalbhalbahlbah@blah.com - Password:
r@nd0mP@ssw0rd - Name:
Random Name
- Python 2.7+ (original code) or Python 3.x
- formasaurus
- lxml
- requests
- selenium (for demo spiders)
- Additional dependencies for advanced features (see requirements.txt)
This is a research/testing tool. Contributions are welcome!
See repository for license information.
This tool is for testing and research purposes only. Always ensure you have permission before automating registration on any website.