Selenium seems to be great for browser automation and has support for multiple programming languages, including my favorite -- Python. I decided to test it on Kali Linux and faced certain issues. So I resolved them one at a time and I am logging the procedure here.
Installing Selenium
First, we need to install the Selenium module in Python using 'pip install'. This is simply:
apt-get install python-pipThis should install the latest version of Selenium module. Test it by going to the Python command line and importing the module:
pip install selenium
from selenium import webdriverThis works. What does not work is following test code:
browser = webdriver.Firefox()It fails saying: webdriverexception: 'geckodriver' executable needs to be in path.
browser.get('https://lifeofpentester.blogspot.com/')
To resolve this, we need to install 'geckodriver'.
Installing Geckodriver
Grab 'geckodriver' from its Github here: https://github.com/mozilla/geckodriver/releases
I grabbed Linux64 bit version since I am running Kali Linux 64 bit. Unpack the archive and make the geckodriver executable and copy it so that Python can find it:
root@amirootyet:~# chmod +x Downloads/geckodriverNow we are faced with a new error:
root@amirootyet:~# cp Downloads/geckodriver /usr/local/bin
selenium.common.exceptions.WebDriverException: Message: connection refused
The problem here is that the latest version of Selenium that we installed cannot interface with the older version of Firefox that comes bundled with Kali Linux. I do have the latest version of Firefox downloaded and unzipped.
Loading the correct Firefox version
So now we point Selenium to use this latest binary of Firefox instead:
from selenium.webdriver.firefox.firefox_binary import FirefoxBinaryOf course, you need to ensure that paths are correct pertaining to your system and where you downloaded and unzipped Firefox. At this point, we can get this Python script to open a webpage for us:
binary = FirefoxBinary('/root/Downloads/firefox/firefox')
driver = webdriver.Firefox(firefox_binary=binary)
from selenium import webdriver
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
binary = FirefoxBinary('/root/Downloads/firefox/firefox')
driver = webdriver.Firefox(firefox_binary=binary)
driver.get('https://www.lifeofpentester.blogspot.com')
#insert time.sleep() here
driver.close()
So now that we have some browser automation going, I will post more results and scripts such as logging into web forms using automated Selenium scripts when I find time. Let me know in comments if this solution worked for you.
No comments:
Post a Comment