Archive of Dave's Weekly Newsletter of Automation Tips! |
The only problem has been that Dave's language of choice for the code examples is in Ruby. Since I only have been just getting back into coding, I have had difficulty converting the code into Java, what I am using on the workplace.
There is hope! If you take a look on Dave's ( @TourDeDave ) GitHub site, you can find the corresponding Elemental Selenium Tips source code.
Sourcecode for examples in the Elemental Selenium Tips |
It looks like around a third of the seventy examples have been converted to Java.
Let's compare the first tip, uploading a file, about how to setup and teardown a browser.
Setup/ Teardown: Ruby:
# filename: upload.rb require 'selenium-webdriver' require 'rspec/expectations' include RSpec::Matchers def setup @driver = Selenium::WebDriver.for :firefox end def teardown @driver.quit end def run setup yield teardown end
Setup/ Teardown: Java:
public class Upload { WebDriver driver; @Before public void setUp() throws Exception { driver = new FirefoxDriver(); } @After public void tearDown() throws Exception { driver.quit(); }
... You know, they look pretty similar. Let's compare the Ruby version Dave has in his original tip to the one that he has in GitHub.
File Upload Test: Ruby:
run do filename = 'some-file.txt' file = File.join(Dir.pwd, filename) @driver.get 'http://the-internet.herokuapp.com/upload' @driver.find_element(id: 'file-upload').send_keys file @driver.find_element(id: 'file-submit').click uploaded_file = @driver.find_element(id: 'uploaded-files').text expect(uploaded_file).to eql filename end
File Upload Test: Java:
@Test public void uploadFile() throws Exception { String filename = "some-file.txt"; File file = new File(filename); String path = file.getAbsolutePath(); driver.get("http://the-internet.herokuapp.com/upload"); driver.findElement(By.id("file-upload")).sendKeys(path); driver.findElement(By.id("file-submit")).click(); String text = driver.findElement(By.id("uploaded-files")).getText(); assertThat(text, is(equalTo(filename))); }
Ruby and Java are as different as night and day. If you were a newly minted software developer, there would be no way to translate from Ruby, where much of the complexities are hidden from view, to Java, where everything is all out in the open.
Wondering what the AssertThat is? That is Hamcrest. Instead of using TestNG's assertEquals(actualValue, expectedValue) this is a bit more readable.
I'm glad that the code examples from Ruby to Java. This would help former manual testers like myself not just learn automation development, but learn Java development.
Hrm... it looks like Dave is looking for people to translate Ruby to Java for some of his code examples:
"They're currently only available in Ruby. But for each one that gets converted to a new programming language, I'll do a full write-up for it.... Work has been quite busy, bleeding into my free time... but maybe I can make this my next weekend project?
"To submit your entry:
- "Fork the repo
- "Choose a tip to port
- "Add a folder to it for the language you want (e.g., javascript, java, csharp, php, python, etc.)
- "Write the code example
- "Submit a pull request"
- T.J. Maher
Sr. QA Engineer, Fitbit-Boston
// Software QA Engineer since August 1996
// Automation Developer: [ 1 ] year and counting
No comments:
Post a Comment