Did you created your selenium grid tests ? Did you know, that you can get them to run faster? Just use PhantomJS! Wait... what? NodeJS technology in Python stack?! YEAH! With docker you can combine them!
This article is connected with How-To-Create-Your-Selenium-Grid-Compatible-Test - check it out :)
How to run your PhantomJS
Using docker you can just:
docker run -d -p 8910:8910 wernight/phantomjs phantomjs --webdriver=8910
And here is what I thought will be a simple integration with Selenium Grid. Then I've found it does not have proper connector to Selenium Grid (eh...). Moreover I've found it has problems with making "send_keys" because of some strange dependency problems that you can find on stackoverflow (problem exists I've check it, before I found those SO pages): - here - here
So what can we do?
Well here's what I've been able to make with a not-fully working python api to remote PhantomJS :
import unittest from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities import time class PhantomJSTests(unittest.TestCase): def test_search_in_python_org(self): # this test will not work on PhantomJS since it has a in-compatible API :( # instead we need to create a simulation for that driver = self.driver print driver.get("https://github.com") assert "GitHub" in driver.title elem = driver.find_element_by_name("q") # send_keys does not work on phantomjs - there are some strange workarounds but in my limited time I could not get them to work. # I will however make a follow up on this! # elem.send_keys("anselmos") # time.sleep(5) # elem.send_keys(Keys.ENTER) # time.sleep(5) # assert "No results found." not in driver.page_source def setUp(self): self.driver = webdriver.Remote( command_executor='http://127.0.0.1:8910', desired_capabilities=DesiredCapabilities.PHANTOMJS ) if __name__ == "__main__": unittest.main()
OR download it from here
Is there any other solutions to this ?
Well.... yeah. You can either recompile PhantomJS (by using different branch named " backport-ghostdriver-2-0-to-phantomjs-2-1 " and then using command
docker run -v $PWD:/src debian:wheezy /src/deploy/docker-build.sh as suggested on github issue page in this comment by jesg
Wait until someone will fix PhantomJS (that is apparently untill 2.5 -btw current ver. is 2.1.3 ... )
That's it :) Comment, share or don't :)
I hope you enjoyed this episode as much as I did :)
BTW I will do a follow up on problems with PhantomJS - and will give you feedback if there are any other solutions to the problem :)
If you have any suggestions what I should blog about in the next articles - please give me a hint :)
See you tomorrow! Cheers!