How can I get watir-webdriver and safariwatir working together? - watir

Good morning,
I am setting up watirgrid and I have been partly successful, however I am having problems getting all the providers to work with my ruby script.
On my Mac I have setup a provider from the command line using:
provider -d safariwatir -c druby://192.168.0.1:11235
and then on my Ubuntu machine I setup another provider thus
provider -d webdriver -c druby://192.168.0.1:11235
Now if I use the following ruby code:
require 'rubgygems'
require 'watirgrid'
Watir::Grid.control(:controller_uri => 'druby://192.168.0.1:11235', :browser_type => 'firefox'_ do |browser, id|
puts "Browser id is #{i}"
browser.goto("http://www.google.co.uk")
puts browser.title
end
This sort of works in that both browsers start up and goto the selected page. However I do not want to have to specify 'firefox' as a browser type as I want to target all browsers in the grid (IE on Windows, FF on Mac etc). So I then try to take out 'firefox' from the Grid.control command and whilst 'Safari' starts up I get an error from the second browser as it does not know what to run I am guessing.
(Apologies but I am not at my machines to recreate the error and post it here. I will update the post with this when I can).
I have tried to start the webdriver provider with the -b switch:
provider -d webdrive -c druby://192.168.0.1:11235 -b firefox
and then run the same ruby code again, without the browser type, but i get the same error.
Am I missing something here?
I assume that it is normal to run multiple providers on a machine that has several browser, just on different ports.
I have had some success with this, I have got Chrome working with the webdriver on an isolated machine, and I think it will really help with my web development, I just need to get past this problem so thanks for any help. I hope this all make sense.
Thanks, Russell

Interesting use case, I hadn't thought of that (on the same machine with different browsers AND different driver types)
Have a look at the latest build
gem install watirgrid --pre
There's an example in rspec here:
https://github.com/90kts/watirgrid/blob/master/spec/grid_mixed_spec.rb
If you're going to start more than one provider on the same machine, make sure they're separated using the -p argument by unqiue ports. I've also fixed a bug so that if you specify -b browser_type it will default to that browser type if not explicitly defining it in Watir::Grid params.
Let me know how you go...

This might be a bit easier now that Webdriver has added support for Safari
See here for more info: http://watirmelon.com/2012/04/17/using-watir-webdriver-with-safari-at-last/

Related

I am facing issues printing things on repl.it

I am new to repl.it and I was trying to print the python version using this code Print Version of the Python Running on the Machine
Here's the code:
import sys
print("Python version")
print (sys.version)
print("Version info.")
print (sys.version_info)
but it prints absolutely nothing. Trying to do the same thing onto Jupyter Notebook and my code works. While I know I can print the version directly from the shell tab out there but I was wondering what's wrong with my code and why it isn't working with repl.it
This seems to be the same for user input as well where I try to do
name = input("Print my name?\n")
but it prints absolutely nothing onto the console. I am sure someone here must know what am I missing here. Sorry if this is a noob question.
"Help! 🙋 My REPL won't run"
Here are six reasons your Python REPL.it environment may not be working. 📃
Checklist to fix common problems
Have you configured your Run ▶️?
Repl.it doesn't automatically run your current working document. Configuring your Run ▶️ button will enable replit to know what to do when you hit the button.
Configuring the "Run" Button
A file named .replit can be added to any repl in order to customize the behavior of the "Run" button. Written in toml, a .replit file looks something like:
run = "<run command here>"
language = "<repl language>" # optional
In the snippet above, run is a string which will be executed in the shell whenever you hit the "Run" button. The language helps the IDE understand how to provide features like packaging and code intelligence. This is normally configured for you when you clone from a Git repository.
The .replit file can also provide other configuration hints. The full specification is provided below:
run: Command that is executed when the run button is clicked
language: Reserved
onBoot: Command that is executed once when the repl first starts up
packager.afterInstall: Command that is executed after a new package is installed
packager.ignoredPaths: List of paths to ignore while attempting to guess packages (More about installing packages)
packager.ignoredPackages: List of modules to never attempt to guess a package for, when installing packages (More about installing packages)
Example .replit File
run="python main.py"
language="python3"
onBoot="echo Booting up!"
[packager]
afterInstall="date >> package_install_log"
ignoredPaths=[".git"]
ignoredPackages=["twitter", "discord"]
Attempt running the *.py script through the interactive shell instead of console. If the script runs in console, you may be needing to diagnose the shell. See choices below.
Check that the Browser Developer Console is not showing any errors If you see errors, you may be having issues with your browser or extensions. Try disabling browser extensions temporarily.
REPL.it relies on Google Cloud Platform services for its backend functionality and sometimes those servers are unresponsive. Check the REPL.it status page or the REPLIT Twitter account to see if they're having a GCP backend service outage. If they haven't updated recently, they may be responding to an unreported outage. Check Google's own GCP status page here. You can also Tweet at the CEO of Repl.it here.
Try refreshing the REPL.it environment locally. Clear the console output and scroll-back by using the ✖️ next to the search icon 🔍. Also, try exiting the Python REPL with exit() to see if it will respond.
If #5 doesn't work, try an empty-cache hard reload. This can help to expunge unresponsive javascript, broken html, misbehaving css, and any unmetabolized toxins from the bowels of your browser.

Chrome OS: how to enable direct SFTP access in the Files app / Pixelbook Review

An article on Chrome OS that I read here:
https://medium.com/#JamesCridland/review-five-months-with-a-chromebook-for-web-development-writing-and-more-8adf36b4a061
says:
"Update: Above, I mention that I use SSH and vi to do my programming work. And I did. Except I don’t any more. It turns out that one of the newer updates added direct SFTP access into the Files app (the equivalent of Explorer or Finder), so that my development box appears simply as another drive on my Chromebook. And Caret is an excellent programmer’s editor. So now I have a proper programmer’s editor (as well as the SSH terminal I need to put those changes live)."
Ok. But, when I go into Chrome OS's files app, the apparent way 'mount' my equiv of his
'development box' is via 'add new services', which is launching a webstore-app named 'SFTP' (whose icon is a blue folder outline with "SFTP" on it). i,e.:
https://chrome.google.com/webstore/detail/sftp-file-system/gbheifiifcfekkamhepkeogobihicgmn?hl=en
(My equiv of his 'development box' I'm assuming to be my web-server at bluehost.com, where I currently use Firefox's FireFTP extension, on Win-10.)
I can't get this 3-stars webstore 'SFTP' app (authored by someone from Japan) to authenticate me into my bluehost acc't. So, now I'm wondering whether
this 'SFTP' app is even the right thing to have installed, due to all the one- and two-star showstopper reviews. One typical review by a guy named Tim says:
"It's a nice try, but I really wish someone who knows what they're doing would make this service. It looks like it works but if you drill down more than a few folders deep on the remote filesystem, operations slow to a crawl."
Similarly, the two clients ('sFTP client' and 'sFTP client Lite) also have such low ratings, that my gut says that Google has failed to deliver a robust web-developer infrastructure.
Come on Google...you need to implement this stuff under your own logo.
Am I missing something???
Probably should advertise this functionality better :), but the Secure Shell App supports mounting via SFTP so it will appear in the Files app.
Steps to use:
Install Secure Shell Chrome extension.
Launch the extension (look for it in the bar to the right of the omnibox/browser URL bar -- it'll have a black terminal icon).
Enter the connection details to create a new profile.
Give it a description like "user#foo.com".
Instead of clicking "Connect" in the bottom right, click "Mount".
Authenticate with the server (keys/pass/whatever).
Once it finishes, it'll now be visible in the Files app.
If you suspend/resume the system or otherwise logout/reboot, you'll need to relaunch Secure Shell, select the saved profile, and then click "Mount" again. We probably should make this a bit smoother, but that's how it works currently.
No, not an answer yet...just more wishlist stuff:
Ok, more recent info about the Firefox browser's "FireFTP" addon:
It no longer works on the (new) std Firefox browser, as of a couple of
weeks ago when version 57.0 was released. (No biggie tho...a goggle revealed
a new-to-me browser called 'Waterfox' and it nicely supports FireFTP and the
other addons that Firefox dropped support for.)
So a bit more research yielded only yet more 'mumble-mode' confusion: it revealed that FireFTP is open source...located here:
https://github.com/mimecuvalo/fireftp
(So I submitted a new 'issue' there and asked about porting it to Chrome.)
I'm desperate, and recently test-drove Google's new Pixelbook.
(Sigh...nothing inspirational came of that...I give it one-thumb-down rating.
Here's my notes from that experience:
------------ Review notes of Pixelbook: ----------------------
Google didn’t think to include a USB-C to USB-A adapter. (A $2 item. e.g.)
https://www.amazon.com/Remax-USB3-1-Female-Adapter-Silver/dp/B01MCSRSKN/
That was my 'showstopper'...like a few other reviewers said...it's not well
thought out / matured. To me it feels more like a gimmick, than a product.
At a minimum, it rates my newest hashtag: #NRFPT (not ready for prime time).
I found no obvious way to disable the touchpad, when using a mouse.
In fact, no other reviewers expressed interest in using a mouse. (???)
Lastly, my favorite kind of Android apps are 'widgets', and I see no signs
that it has occurred to Google to allow Chrome-OS's desktop/background to
host any widgets.
Ok, I'm still in mumble-mode...and still in search of a FTP/SFTP GUI client for
the Chrome browser / Chrome-OS that is the quality of FireFTP.
Enable Linux(beta) on your chromebook. Then you can do whatever you want like on others linux machine.
A simple sftp connection command
sftp [user#]host
Enable linux and mount with sshfs
sudo apt install sshfs
then
sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 user#xxx.xxx.xxx.xxx:/remotedir localdir
or with key auth
sshfs -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3,IdentityFile=~/.ssh/id_rsa user#xxx.xxx.xxx.xxx:/remotedir localdir
These will reconnect after resuming from sleep

Arch Linux Pacman monitor

Reminder: Arch Linux uses pacman not apt-get
So I had an idea that I wanted to be able to leave my room and still see the progress of a download from my phone. I have looked for preexisting programs but have found none, so I decided to write a program myself.
the first step I took was reading the pacman documentation, to see if a function that could get the current download status was. I know there is a file I can check to see if exists
/var/lib/pacman/db.lck
which would tell me if there is a download
however I wanted to know more specifics on the download - progress and time remaining, name of download.
I have also found some GUI programs that use pacman and I was thinking of getting the source code to see if I could use some of that, but haven't found anything useful.
is there a way to find out the specifics about a current download, other than looking at the terminal that the command is running on?
Why overcomplicate things? Just install "screen" via pacman, and start the pacman update inside a screen.. And from your smartphone, use a SSH client to connect to your local machine and access that screen.
You could setup an ssh server on your host machine and connect to it using a terminal emulator on your phone (termux for example) and run whatever commands you like from there. This way you'll be able to view all terminal output from your phone quite seamlessly.

Run Selenium RC script on any browser that is available on user's system

I have a selenium script which i want to run on some other user's machine. I have set 'firefox' as my default browser in the selenium script.
Now the user's machine does not have 'firefox' installed on his machine.
Is there any code available that can fetch which browser is installed on that user's machine and run the script in that browser?
I want to have 3 browsers in my script like IE, Firefox and Chrome.
The script must run on any one browser which is installed on user's machine.
Any help will be appreciated. Thanks
You would either have to have some code that looks for each kind of browser (e.g. looking for the executable such as chrome.exe or firefox.exe) or you might be able to get away with some try-catch blocks that try to get Selenium to launch the browser, and treat any exceptions as 'browser didn't exist'.
I would suggest that specifically checking for each browser type is the better option though.
You could then build up a list of the available browsers and have some code to select one of them (based on some kind of priority/preference) as the target for Selenium

ssh and window ids

I have a project to do in school which is baffeling me... I am SSHing into a Solaris computer in the computer lab from my own Debian box via
ssh -Y name#***.cs.<school>
I can get in just fine, and the X11 seems to be working also. However, this peticular project requires us to find the window id of a netscape window via xwininfo and use this information in the following command
netscape -id 0xa00029 -remote 'openFile(/path/to/html/file)'
Now, if this netscape is the only window I have open (other than xterm), the preceding command works just fine. However, if I have any other iceweasel windows open (regardless of the order in which I opened netscape/iceweasel) the command will forward to my iceweasel despite the facts that I'm running the command in my SSH session and the two windows have very different window ids.
All of this eventually has to go into a C program, but I can't even get it to work reliably manually!
Any ideas?
P.S. I just saw this that may help. When I SSHed via Cygwin/X using the same command, I get this error
Warning: No xauth data; using fake authentication data for X11 forwarding.
Not sure if this is important as I can still use X11 (aparently) perfectly.
Thanks.
P.P.S the -id switch is documented in the netscape man pages:
-id window-id
Identifies an X window to receive -remote commands. If
you do not specify a window, the first window found is
used.
When you use ssh -Y, you're requesting that remote clients be forwarded to your local X server, with full permissions. The Netscape/Mozilla/Firefox/Iceweasel/Etc. remote protocol runs through the X server, so it'll be forwarded too.
http://www.mozilla.org/unix/remote.html documents the protocol, and mentions nothing about -id. Nor does a very quick look at the source (e.g., http://mxr.mozilla.org/seamonkey/source/widget/src/xremoteclient/XRemoteClient.cpp#202) look promising for there being an -id option.
I sat down to an actual machine to perform the same tests, and they all fail there too... I would open 2 netscape windows and try to direct the command to one at a time. The most recently opened one would work properly, but any command directed to the other one would be forwarded to the same window, so at this point I am convinced that the problem lies in the command being not properly implemented and/or everything on that system being really, really old.
if I have any other iceweasel windows
open (regardless of the order in which
I opened netscape/iceweasel) the
command will forward to my iceweasel
despite the facts that I'm running the
command in my SSH session and the two
windows have very different window ids
Iceweasel is coded that way. It tries to have only a single process run for all open windows for that user.
Use the -no-remote command line option to avoid it. See http://kb.mozillazine.org/Command_line_arguments

Resources