How do I enable WebGL in headless chrome in Ubuntu? - selenium

How do I enable webgl or install webgl in headless chrome in Ubuntu 14? I tried installing libosmesa6, but that did not help.
Can someone please point me in the right direction?
I want to use webgl to work with headless chrome and selenium tests? I am using nightwatch to run the tests.

This worked for me to get chrome to use osmesa
sudo apt-get install libosmesa
sudo ln -s /usr/lib/x86_64-linux-gnu/libOSMesa.so.6 /opt/google/chrome/libosmesa.so
google-chrome --no-first-run --user-data-dir=~/chrome-stuff --use-gl=osmesa
Warning: When running with osmesa the entire page is rendered with osmesa making it pretty slow. So, if there are tests you have that can run without WebGL you probably want to run them without osmesa.
Also note that chrome itself uses osmesa to headless test but it uses a specific version. At the time of this answer it was version 9.0.3. It also makes a few changes listed here
Otherwise to run headless in general I found this
https://gist.github.com/addyosmani/5336747

Related

GNOME Shell integration extension is running, native host connector is not detected?

I have followed these steps while installing the gnome extension of chromium in Ubuntu 20.04.
Installed the GNOME Shell integration extension on chromium.
As per their documentation ran a command to install chrome-gnome-shell
sudo apt-get install chrome-gnome-shell
Still while loading the gnome-extensions page, it is showing error that "Although GNOME Shell integration extension is running, native host connector is not detected. Refer documentation for instructions about installing connector."
Can anyone tell me how to resolve this issue in steps?
FYI: starting from Ubuntu 21.10 Firefox comes as a default browser and as a snap, as well as Chromium. And has the same problem: GNOME Shell integration shows the same error.
Other ways to install the extensions are:
gnome-extensions install --force your_downloaded_extension.zip
unzip your_downloaded_extension.zip ~/.local/share/gnome-shell/extensions/
Probably this is because you are running Chromium as a Snap. There is an open bug in Launchpad about this, that appears to still be happening in Ubuntu 20.04 (still happening in Ubuntu 22.04):
https://bugs.launchpad.net/ubuntu/+source/chromium-browser/+bug/1741074
The easiest solution would probably be to use another web browser, not in a Snap.
I experienced this issue when upgrading from Ubuntu 21.04 to Ubuntu 22.04 (Jammy Jellyfish), where Firefox was installed via snap - supposedly the sandboxing made it unable to detect.
My resolution (which brought back gnome extensions connector being seen) was to install firefox manually by debian package via the directions in https://balintreczey.hu/blog/firefox-on-ubuntu-22-04-from-deb-not-from-snap/ . You may also be able to install the direct tarball following directions in https://fostips.com/install-latest-firefox-non-esr-debian/
Another option is to use a native extension manager as suggested in https://haydenjames.io/ubuntu-22-04-install-gnome-extensions-manager-workaround/
I solved using Chrome and not more Firefox for extensions.gnome.
(I use Chrome just for manage this extension)
If you still got problems, you could simply do this:
sudo apt-get reinstall chrome-gnome-shell
For me it did work after all, but just by using another browser - Firefox
I'm using Ubuntu 20.10 and I also had this issue. I was using Chromium but I found that Chromium dropped support for this, therefore I installed Firefox from the software. This did not work either.
The fix was to uninstall Firefox from software and install Firefox from ubuntu software with the source: ubuntu-groovy-updates-main
I installed the browser extension on there and it worked perfectly.
Aevin J He gave the answer if you're on ubuntu 21.10. it really matters whom you install it from. don't use the default one, use the one with most reviews

WebDriverException: Element is not clickable at point

Complete error
org.openqa.selenium.WebDriverException: Element is not clickable at
point (931, 23). Other element would receive the click:
Running selenium tests using Jenkins in headless browser
In following environment
OS- CentOS 6 and Xvfb installed in same machine
Xvfb screen resolution - Xvfb :1 -screen 0 1280x1024x16 &
Driver - Firefox driver
Selenium webdriver version - 2.52.0
The same test case working fine in windows os with firefox
Try this. Install Xvfb plugin on Jenkins.
After that install Xvfb in "Global Tool Configuration"
Then under your project configuration, setup xvfb
Try Using resolution given in image
Now run your build :)
This is the reason it is important to test on different browsers and on different platforms. Sometimes what works on one browser/os does not work on the same browser but a different platform.
I would update your setup so that you make a screenshot when you run into this type (and most other types) of error. In my experience this is the single best thing you can do to reduce the time spent to debug these issues.
In my setup I do the following:
Create a screenshot
Capture the coordinates from the Selenium error message
Use an image manipulation program to automatically create a red dot where the click happened
Usually I just have to take one look at such an image to see exactly what is happening.

How to run the selenium code on linux using firefox without GUI?

I had redhat Linux server command line but there is no GUI for that and I need to run selenium code on this server with firefox. As I am new to selenium so I am not sure whether it will work or not.
For achieving this I had install Firefox on my Redhat linux machine successfully but not able to trigger that as it is showing no display found.
Is there any other way to achieve this for headless browsing, where virtually a firefox will be opened and selenium code can be executed without GUI. Is it possible to do??
You can use HtmlUnitDriver of selenium to use headless browsing but it will not open firefox and may be not loading all content to it's cache as same as firefox
Refer Below:-
https://code.google.com/p/selenium/wiki/HtmlUnitDriver
Another thing you can use is Phantomjs with selenium Webdriver. This is most using pattern by industries for headless browsing
Refer below:-
http://www.guru99.com/selenium-with-htmlunit-driver-phantomjs.html
Yes you can trigger selenium file using command line
http://www.tutorialspoint.com/testng/testng_executing_tests.htm
Bash file is running fine in windows for testng but it is not working in linux/mac
Now if still your firefox is not opening then it is basically issue of some setting with your OS with firefox
Refer that too :-
https://serverfault.com/questions/279036/open-terminal-via-ssh-run-firefox-display-not-found
May be you have problem with some permission in red hat
Hope it will help you :)

A GUI to debug phantomjs script

I am using phantomjs to build a web crawler. My current crawler is a Python script using selenium, which requires a running Firefox browser. While Selenium is good for debugging scripts (as I can use firebug to inspect the webpage), it cannot be deployed on linux servers without GUI. So I am trying to translate my Python script to phantomjs.
To debug phantomjs scripts, I save the page source html and render a png screenshot to disk, and open it in Firefox to inspect the source page. I am wondering if there is a better way to do this, e.g. a plugin for phantomjs, etc.
This little hack is using a simple technique: It grabs the screen as PhantomJS or CasperJS sees it with captureBase64('png') and then it is POSTing the image into the receiving server which then sends it via socket.io to the browser which displays it is as inline image.
The source code is available on github:
https://github.com/maciejjankowski/flaming-octo-puss
I'm not sure if PhantomJS has it, but CasperJS does (and the latter adds some extra functions to PhantomJS)
and use remote debugging as others suggest
As for most of the JS scripts, it's not so trivial to debug phantomjs script, because there is no IDE/compiler behind this.
First, I higly suggest you to read the Troubleshooting section.
As said by torazaburo, your best option is to use Remote Debugging : scripts can be run in a Web Inspector interface-like console : step-in, step-out, break points, local variables... many classic debugger features are available. If you're familliar with Chrome developpers tools, it's pretty the same.
Though not a solution to your Phantomjs troubles,I think Selenium with Python bindings can be used very efficiently as a headless scraper in a Linux environment.
You can use PyVirtualDisplay, a Python wrapper for Xvfb and Xephyr to fake a display.PyVirtualDisplay needs Xvfb as a dependency. On Ubuntu, first install Xvfb:
sudo apt-get install xvfb
then install PyVirtualDisplay from Pypi:
pip install pyvirtualdisplay
Sample Selenium script in Python in a headless mode with PyVirtualDisplay:
#!/usr/bin/env python
from pyvirtualdisplay import Display
from selenium import webdriver
display = Display(visible=0, size=(800, 600))
display.start()
# now Firefox will run in a virtual display.
# you will not see the browser.
browser = webdriver.Firefox()
browser.get('http://www.google.com')
print browser.title
browser.quit()
display.stop()

Use phantomjs to drive chrome

Is there a way to use phantomjs to drive my firefox/chrome browser?
We have a bunch of casperjs tests, that I would like to run directly in the browser for debugging ( or just pure interrest ).
I seem to recall that a long time ago, before phantomjs became pure headless, I could do this by making it run on X instead of xvfb and removing/uncommenting the phantom.exit() line.
PhantomJs IS a browser, so the answer is no. You may want to look into Karma however.
You just use a config file which allows you to provide a browser to run your tests in:
Chrome
ChromeCanary
Firefox
Opera
Safari (only Mac)
PhantomJS
IE & Edge (only Windows)
SauseLabs, BrowserStack Electron, & more
Still, your tests will need to be written in QUnit, Jasmine, Mocha, ... which can be too much work to port from CasperJs.