2. Background
You’re a BOFH at GlobalFskcup Ltd.
Everyday you deal with numerous incidends.
You have to seek approval and/or log every change made.
The Head of IT has his favorite tool for that
MacroHard PointShare form
Rich editor filled form, with sparkling format choosers.
Bells and whistles included
3. The soft problem
Filling the form takes 5-20 minutes each time
No PFY available to do the job
Keeping templates in a text document... sooooo 1990
Browser plugins - does not recognize all of provided inputs
curl - yeah right, like I have time for that
11. Problem? HTML injection
the id is a hash of something... different everytime
Let’s get the RichEditor’s class
1 e = "table.ms -formtable > tbody >
2 tr:nth -of -type (7) > td.ms -formbody >
3 span[dir=’none ’] > div >
4 div:nth -of -type (2)"
5 c=driver. find_element_by_css_selector (e)
6 .get_attribute("class")
12. Problem? HTML injection
We can not use webdriver.send keys() on that... it’s
inside the html code
We have to inject HTML with javascript
1 JS="document. getElementsByClassName ({0})[{1}]
2 .innerHTML =’{2}’".format(
3 CLASS_NAME , INDEX ,
4 "<marquee > WTF </marquee >"
5 )
6 driver.execute_script(JS)
13. Clicking a radio button
1 driver. find_element_by_css_selector (
2 "input[type=’radio ’][ value =’{0}’]".format(
3 "Approved by the CEO"
4 )
5 ). click ()
15. Sending the form
1 driver. find_elements_by_css_selector (
2 "input[value=’Save ’][type=’button ’]"
3 ). click ()
16. Many python, such win
208 lines of Python
virtualenv
selenium for browser automation (pip install selenium)
click for easy commandline (pip install click)
path.py just because (pip install path.py)
YAML for templates (pip instal pyYaML)
keepass for credentials (pip install keepass)
17. outcome, further plans, other uses
Outcome
It took 3hrs to write
It eared it’s keep after one day
Further plans
webdriver.PhantomJS() for headless operation
ansible integration
Other uses
e.g. testing how long it takes the user to perform some action
18. Thank You
wiki2beamer - latex-beamer made easy
impressive - pdf presentations with sugar added
http://github.com/frogu/presentations