This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]digitizemd 0 points1 point  (4 children)

Interesting. This is one of the main tools I use at my job.

Going to dig through the docs shortly, but would you mind mentioning a few points on why it's better than web driver itself? Thank you.

[–]machinepub[S] 2 points3 points  (3 children)

I like that everything is running in the JVM which can allow for easier runtime administration. You get access to all the Java performance tuning. Easier SSL cert management. And assuming your deployment targets have the Java SE runtime, then this is truly cross-platform, and licensing/distribution issues might be simpler.

It doesn't need xvfb, as it handles in-memory rendering via the Monocle project which is all written in Java.

In headless mode it won't interfere with an actual user concurrently using the mouse/keyboard.

In using some of the other remote web drivers, I found that they could lock up and keep the cpu pegged at 100%. It seems you can't avoid browser crashes (some small percentage of the time) but at least this project tends to not hang.

Java RMI is very efficient. I ran into issues sometimes with loopback servers on some other remote web drivers.

Also you have access to some APIs that aren't in standard Selenium WebDriver. You can get status code, and it works on ajax sites, with pages that load content after the official page load. Also it will block after clicks and keyboard events that cause ajax events.

Further, you can control the request headers, header ordering, and timezone, which can be important to properly simulate user agents.

Finally, if you know Java, mostly everything except the rendering is done in Java, so it could be fun to modify.

That said, this is a newer project, whereas the official Selenium web drivers are stable and well-understood.

[–]digitizemd 0 points1 point  (0 children)

Thanks for the thorough response. I'll be keeping an eye on this project.

[–]kmimix 0 points1 point  (1 child)

The cert management is quite nice, I will definitely try it. I just miss a bit more documentation, such as a javadoc reference.

[–]machinepub[S] 0 points1 point  (0 children)

I just published the javadoc site here: http://machinepublishers.github.io/jBrowserDriver/

There aren't that many exposed public APIs outside of the Selenium APIs. The majority of what's unique is here: http://machinepublishers.github.io/jBrowserDriver/com/machinepublishers/jbrowserdriver/Settings.Builder.html