Using Robot Framework with Selenoid

Hello, I’m having some dificulties using Selenoid with RF regarding viewing the test execution and recording video of the execution.

The test runs fine but i have no preview in Selenoid-UI and no video is recorded.

I have defined my variables and keywords like this:

*** Variables ***
#BROWSER
${BROWSER} chrome
${WMS_URL} https://www.example.com

#SELENOID
${SELENOID_SERVER} http://localhost:4444/wd/hub
&{desired_caps} enableVNC=${True} enableVideo=${True}

*** Keywords ***
Start Test
Open Browser ${WMS_URL} ${BROWSER} None remote_url=${SELENOID_SERVER} desired_capabilities=${desired_caps}
Maximize Browser Window

End Test
Close All Browsers

Tests execute fine but no video preview or recordings.

Can someone lead me in the right direction here?
Thank you!

Maybe to lead you in the right direction, you need to explain:

  • What is Selenoid?
  • Is that a public/free app/site?
  • Why it uses such old version of Chromedriver?

Thanks.

Selenoid is a implementation of the Selenium hub using Docker containers to launch browsers. No need to manually install browsers or dive into WebDriver documentation. Any browser session can be saved to the H. 264 video. Selenoid is opensource: GitHub - aerokube/selenoid: Selenium Hub successor running browsers within containers. Scalable, immutable, self hosted Selenium-Grid on any platform with single binary.

I’m using a older version of Chromedriver on purpose. But i can install any version I want just downloading the container. I issue is not on the version since i have it working fully on a GoLang Automation Project.

Hi João,

image

It seems your error is related to a call to a GetCanonicalHostName function? Though I don’t know what language that function comes from, there’s no python function by that name I know of, i did find a java function getCanonicalHostName() with the same name except a lower case g and I know Selenium uses java, so potentially that’s it?

That java function says:

The getCanonicalHostName() method of java InetAddress class returns the fully qualified domain name for this IP address, that means we may not be able to return FQDN depending on underlying system configuration.

Perhaps that’s a clue? and perhaps it’s an issue with resolving the hostname “18399e2c08fc” to an IP address?

A couple of commands you could try running on the virtual machine (I’ll assume it’s Linux?)

  • On newer Linux distro’s use dig to ask the OS to resolve the hostname to an IP address
$ dig 18399e2c08fc
  • On older Linux distro’s use nslookup to ask the OS to resolve the hostname to an IP address
$ nslookup 18399e2c08fc

Also check the contents of

$ cat /etc/hostname

and

$ cat /etc/hosts

The simple solution might be to just add an entry into /etc/hosts

Something like this might be all you need:

127.0.0.1    18399e2c08fc

All this is just a guess at the problem, I’ve never used Selenoid.

Hope it helps,

Dave.

1 Like

I have used Zalenium, which is now being replaced (or merged into), by the W3C webdriver. I don’t know if this Selenoid is the same.
What is my understanding, is that you need to have a “virtual” screen where you can actually see the browser pages. That is the first part you need to fix. Is it missing an XServer in your host machine?
Can’t you access via VNC or NoVNC or other way the host running robot tests?
Could it be that your host is a Windows or macOS machine, and you need a XServer client, like XMing or XQuartz?

As, you can see, I don’t have direct experience with this SeleniumHub kind of environments, so good luck.

Anything in Selenoid logs? Last time I used Selenoid few years ago and was able to record video, but never tried VNC.