3

Browser automation is a PITA. I’m going on my fourth side mission with this crap and I honestly still look like a newbie. I’ve tried Java Selenium with Chrome, Excel VBA with IE9, Vanilla JS in the browser console, and tonight I’m thinking to concoct some kind of hybrid CDP & Selenium approach in Chrome. Never used CDP before, not even sure where to start but I heard it sucks like anything else unless you get some extra libraries and plugins and stuff.

It doesn’t help that I can’t get just anything I want from our IT Department. It would be another PITA to ask for puppeteer. If puppeteer is totally legit please let me know.

Selenium sucks. The buttons don’t click, the waits don’t wait. Its unusable. Iframes are annoying as all hell but I can deal with that. HTML Tables suck too. It doesn’t help I have to restart my whole java program and whole Chrome every time an element doesn’t get picked correctly. Scripting one single element can take all fucking night.

Chrome dev tools what the fuck. Why the fuck is the DOM explorer in the same window as the web page I’m working on?? I can’t undock it. Am I supposed to use a fucking TV screen to work with this bastard?? If I use the remote chrome tools on port 9225 or whatever - It Still Renders The Whole Fucking Page Alongside The Console. Get Out Of My Way!!! The nested HTML CODE IS ONE CHARACTER WIDE ALL THE TIME. I can’t for the life of me figure out what the fuck I’m looking at. Haven’t you people ever heard of A HORIZONTAL SCROLL BAR at least.

Fuck I tried using getElementById, and the Xpath thing and its not all that great seeing I have seemingly 1000s of nested Divs all over the god damned place oftentimes containing a single element. I’m finally on chrome now should I learn Jquery now? I mean seriously wtf.

I use this one no code tool for dev it has web automation built in. As you can imagine its just as broken as anything else!! I have 10 screens to navigate it gets stuck on the second screen all the damn time. Fuck I love clicking the buttons when my script misses and playing catch up with it.

So as a work around to Selenium not waiting even 1 millisecond when I use explicit wait or implicit wait or fluent wait, I’m guessing maybe I can attach both Chrome Dev Tools Protocol (CDP as ive called it earlier) and selenium to the same browser and maybe I can use CDP to perform a Wait with any degree of success. Selenium will do nothing more than execute vanilla javascript Element.click(); This is the only way I know to even ACTUALLY use selenium beyond the simplest html documents possible. Hell I guess CDP can execute js idk.

I can’t get the new selenium that has CDP but I do have some buggy ass selenium from a few years back. Yeah, I remember reading there was a pretty impactful regression defect in the version I have. Maybe I’m being gaslighted by some shit copy of selenium?

The worst part is that I do seem to be having issues that the rest of the internet’s devs do not seem to be having. People act like browser automation is totally viable and pretty OK. How in the fuck hell is my Selenium Test Suite going to be more reliable my application under test?!!?? I’ll have more fucking bugs in my test suite than in my application. Today, I have less than half a test script and, I. already. fucking. do.

I am still SUPER PISSED at the months of 12 hour days (always 8 hours spent on normal sprint work btw only 4 to automation) I spent trying to automate our regression tests. I got NOWHERE.

I did learn a lot about HTML and JS though like I’m not that mad…but I’m just trying to emphasize my achievement on my task was zero.

The buttons don’t click. There are so many divs and I swear you sometimes need to select a div somewhere in the middle sometimes to get it working. The waits don’t wait. XHR requests are invisible. Java crashes 100 times before I find an xpath and thread.sleep() combo that works. I have no failure modes to use — Sometimes I click the same element 20x in a script because I have no way to know if it clicked the first time! Sometimes you gotta scroll the page to make the click work. So many click methods all broken. So many wait methods all broken. Its not just the elements don’t click! There are so many ways to click that almost work but surely they all fail the same in the end. ok at this point I’m just repeating myself…

there yet even more issues that I can’t remember…and will soon remember as I journey into this project yet again…

thanks for reading I hope I entertained and would love to hear your experience!

Comments
  • 0
    oh yeah, Java exceptions. Element stale, element not found, javascript exception, whatever else random shit you got today — random sometimes it happens sometimes it doesn’t — what a load of bull shit
  • 1
    I used pure selenium (but js, not java) and protractor (built on selenium) in many projects. It was never fun, but feasable. Biggest pain in the ass was to have always the same version of webdriver and browser in the container.
    So maybe it's especially the java bindinga to selenium which are brocken?
    Also there are shiny new frameworks using there own Browser like cypress and tetscafe. They say it's all better with them.
  • 1
    Ah yes, the wonderful world of Selenium. I used it through php-webdriver once to scrap some sites.

    It is usable.... for sites that were made before dynamic dom and reactiveness was a thing. When the html loaded from the initial get request is the html you'll have to work with.

    Xpath is pretty useful when sites use obfuscators, but it's hardly elegant.

    I don't want to use it ever again.
  • 2
    Cypress or testcafe?
  • 1
    Selenium was pretty darn good ten years ago. It had its quirks and using it from PHP wasn't actually straight-forward... But it probably got better since then.

    So i guess, browser automation just isn't your cup of tea. Do something else.
  • 0
    @MegaLeetBro In the dev tool window part, click the three vertical points. Not the other three vertical points in the website part.

    The upmost menu entry "Dock side" gives you the option to undock into a separate window. At least, that's how it works in Vivaldi, which is also Chromium based.
  • 0
    Clojure has it built-in, just saying...
Add Comment