Selenium IDE: controlKeyDown and the likes not working - selenium-ide

I'm still studying for my computer science degree and have mostly focused on the mathematics side of things for now. However, in my current job I am working with Selenium IDE (specifically because it doesn't require coding knowledge) and I'm having a bit of trouble:
I need to test a Shift + click as well as a cherry-pick (Control + click) command on the web-based software we are creating, but it's not working. Manually pressing control and then clicking different elements on the screen works fine, however.
Like I said, I'm using Selenium IDE 2.9.1, and I'm using it on Firefox 50.0.2 on a Windows 10 install. My commands on that section are as follows:
Screenshot of the IDE command
The idea, obviously, being to select the object named Field1, depressing the Ctrl key, selecting the object named Field2 and then releasing the Ctrl key. This should, theoretically anyway (and does work when done manually outside of the IDE), select Field1 and then cherry-pick Field2 from the list as well.
This, however, is not the case, and it doesn't work.
Can anyone, please, advise me on how to proceed here? Should the commands be structured differently? Am I using the incorrect commands? Is there something else I can try?
As a PS: The same issue persists with the shiftKeyDown command as well.
I have searched for this issue online and found no help that actually works for me yet, hence this post.
I am looking forward to your replies, in the hope that I can find success... :)

I think that it is a Selenium IDE original command problem.
When you tried to simulate pressing Ctrl key and used "controlKeyDown/Up" command, it just changed the boolean value and did not fired a real key down/up event. Also Shift and Alt key could not work.
Maybe you should try to add a "keyDown/Up" command after "controlKeyDown/Up" command and the target could be //body .
And, if you need, please try to use the tool, SideeX, the extended version of Selenium IDE. Maybe this problem will be solve in the future and make the test case flexible. Here is the link to SideeX and there are more details about the tool.

OK, I found the solution.
When compiling the tests I test them by running through them step by step to ensure that everything is working like it should, before saving it to a test suite and letting it run on it's own. Now, this involves me double-clicking every command in the Table one by one, in sequence, and keeping and eye on the screen to ensure that it executes and behaves exactly like I want it to. Simple, understandable, logical, correct?
Well, it seems like the controlKeyDown and controlKeyUp commands DO NOT WORK in this way.
I built a bare-minimum test case using only the 4 commands: click the element, controlKeyDown, click the next element, controlKeyUp. I ran through the test a hundred times with no success, but then I started thinking - what if the controlKeyDown command is never released? That would cause issues outside of the test (on the rest of the environment, obviously), since the Ctrl key would be permanently depressed. So I figured that the Selenium IDE either 1. Releases the key in a short amount of time automatically (faster than I can execute the command to click the next element manually) or 2. It simple ignores the controlKeyDown command if it's not run in a complete test case/suite.
So I took the 4-line test case, built up a test screen with test grid elements and ran the test case - and it works. Perfectly, actually.
So, in case anyone has similar issues in the future, try to RUN the test case instead of clicking through it or executing commands manually.

Related

Refresh/Restart Explorer via Remoting

I have some code that unpins and pins items from the task bar and start menu, which I run using Remoting, as a means of cleaning up lab machines between sessions. It works great, other than I need to log off and back on to see the changes. This is somewhat similar to another bit of code I have, which changes the icon of a shortcut in order to "badge" it as an updated file. That code also requires a refresh, but there I am able to use a technique I found here...This does a refresh of Explorer and the desktop shortcut shows up correctly. However, the same code does not do a refresh of the task bar it seems. I also found this, which also seems to not impact the Taskbar.
Also, this is related to the Remoting, because when I run the same code "locally" no refresh is needed. So, curious if anyone knows a way to directly refresh the task bar (and Start Menu) via Remoting? Or am I going to need to brute force it and just log the user off?
Well, this is interesting, and proof that sometimes we look for complex solutions to simple problems. All the examples I found are pretty complex, but what works fine is simply this...
Stop-Process -processName: Explorer
No need even to restart, as Explorer restarts automatically and near instantly.

Registry command entry isn't running like it runs in command line

My question clarified is, "What's different about running a command from within the registry at command line compared to running the same command from in a command line? Then how do I make it the same to work the way I want?"
Information about my program:
This is a ClickOnce application and from what I see there isn't a great way of getting the exact path of the exe instead of the appref-ms. So there is a caveat to my question this whole thing can be avoided if there was a way to find the exact path of the exe each time the program is deployed and I am able to edit the registry to point to said written down path.
I have this entry in HKEY_CLASSES_ROOT please see evidence below:
So right clicking below should work everything is typed in right, but it doesn't work.
So I figured maybe it didn't like my %APPDATA% which honestly should not matter and I got a new error message.
Just so you know my program does work and it's doing something and pulling paths from the args passed to it.
Thank you for reading my lengthy question.
Here is how you set up what I have been trying to setup for a while now. This explanation is assuming you know exactly what you are trying to do.
Publishing A (Offline) ClickOnce Application With Command Line Args Ran From A Right Click Context Menu Item That You Can Deploy As Many Times As You Want Without Editing the Registry Each Time.
If you are doing an online one just use this CTRL+F and type in deadlydog it has two stellar links in that answer. That is much simpler then this below.
Have a project that is published deployed on a file share using ClickOnce in Visual Studio project properties.
Get this code. (If you need multiple args treat them all as one large string then split it)
'VB.NET style code
Dim activationData() As String = AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData
MsgBox(activationData(0)) 'Your big long argument before being split editted or modified.
Why I asked this question and my answer to it.
Make a registry entry using ContextEdit as if you were making your very normal run of the mill context menu for your program. HOWEVER!!!! click the check box that says "expand environment variables".
So the command that you type in should look like this.
cmd.exe /C ""%InsertEnvironmentVariable%\Path\Name To\Your File.appref-ms" "%1""
It should work from that it was a ton of googling mostly because I have never done this and I give up easily on ideas. Also would like to comment on the information for command line and the registry is atrociously organized and abundant beyond belief.
Hope this helps someone trying to deploy a neat clickonce lightweight program that seems integrated like a normal program.

Shortcut for selecting run configuration in Eclipse IDE

I have an Eclipse workspace with a bunch of projects. I manually created some run configurations for each project (it's necessary to pass some arguments to VM, so I can't just run it directly, e.g. using shortcut ALT+SHIFT+X, T in the specific file).
Most of the time, I just use one run configuration (whereas for the first time I manually launch it using Run -> Run configurations -> (name) -> Run). Since I configured Eclipse to always run the last run configuration (on F11 or CTRL+F11), it's usually enough.
However, sometimes I need to switch to a different run configuration and then back to previous one and then to a different one etc. Is there a quick way to do it? I'd like to see a shortcut, which would display pop-up window with all existing run configurations. By typing first few letters, I'd find an appropriate one and would be able to immediately run it by pressing ENTER. I mean something similar to what CTRL+SHIFT+T or CTRL+SHIFT+R looks like.
I'm afraid there's not something like that. Nonetheless, any advice on how to get more effective would be greatly appreciated, because I'm bored of switching run configurations via menu (as I described above). I can press ALT+R, N and then select a run configuration using arrow keys, but it's not really that comfortable.
You already gave most of the answer yourself. Start by pressing ALT+R, N and then simply start typing the name of the configuration you want. The cursor should be positioned in the filter field and thus incrementally reduce the list of launch configurations as you type. When you've narrowed it down to 1, complete the selection by ALT+R.
BTW: thanks for the reminder, I, too, was using the mouse way too much in this particular use case. I will stop doing so, now that I gave the answer :)
Since Eclipse 4.12 (June 2019, 4 years later) you can also launch any of the Run or Debug configurations available in your workspace from... the Quick Access menu (Ctrl+3 shortcut)
Note: For performance reasons, the extra Quick Access entries are only visible if the org.eclipse.debug.ui bundle was already activated by some previous action in the workbench such as editing a launch configuration, or expanding the Run As... menus.

Want to execute single step in selenium web driver

I am using selenium webdriver to do automation of web application.(I am using eclipse)
In my test, I have written the code to login the page by credential, then click some links and go to a particular page.Now on that page i am filling fields through drop down and all and its not working.
So My question is if i changing my code to work with drop down,then to test this again i need to run test case from starting.Means again it it will login page will load and go through various links and then reach to that page.
So can not directly execute that steps only like we do in selenium IDE???
Again and again executing from starting is really screwing my time...??
Is there any way/shortcut?? Please suggest me.
Thanks
Selenium IDE is in-browser, it's then normal you can run at any step. But if your cookies have expired, you'll have to reauthent. It's not a Selenium problem, it's how websites work.
In your tests, you'll always have to start from scratch if your cases involve athent process, unless you manage to get a fine control over your cookies.
You can always make a quick http call to the website you want to connect to with HTTPClient for example, just to get the cookie back, then use it in webdriver with something like
driver.manage().addCookie(new Cookie("foo", "bar", "www.domain.com", "/", null));
then go to the page you need. Notice that this solution solves the Authent problem only, and does not control the state of the tested web-application (data previously posted, etc...).
At our company, we make an extensive use of selenium, and have a lot of tests relying on it, it's therefore a problem we know something about and we are aware of the frustation it can cause.
We use a pretty different solution to get a productivity boost on tests.
In fact, we're using a Groovy Shell-based solution which allows us to go back and forth while developping the tests and keep our browsers open. Groovy is a JVM scripting language that is really easy for a Java dev (almost all Java code is valid Groovy code) and it's really dynamic.
So you can download groovy, run groovy shell (groovysh is the command), then line by line you can launch and interact with the browser xhile your written code is saved to a buffer. When you've done with your test, export the code and put it in Eclipse. It's faster than restarting every time from scratch. Magic lines for starting with selenium are
groovy.grape.Grape.grab(autoDownload: true, group : 'org.seleniumhq.selenium', module : 'selenium-firefox-driver', version : '2.37.1')
import org.openqa.selenium.*
import org.openqa.selenium.firefox.*
driver = new FirefoxDriver()
driver.get("http://my-website.com")
From this point, the browser window is always open, and you develop right in groovy (or java). It's like a selenium-ide, but in groovy, and can be integrated in your developement workflow (but there is a bit of work to do)
This example works for Firefox (as you've probably guessed ;-)) but you can adapt it as you like. We have from this constructed a bunch of tools to develop our tests quickly and iteratively. We found this to be a great savior.
In the case you described, the tests will always return to step 1, therefore, you need to execute your automation suite from the beginning.
Tip for the future, separate your test cases to shorter ones (as Alexander suggested), so you if you need, you can easily use only the cases that needed and relevant to the module you currently working on.
There is nothing different answer..runs from first step...
And my kind advice is that to use a break point in eclipse at which u r guess of failing...and run the eclipse program in debug mode vth continuously pressing F6 key.
The excecution will be slowed and display will be step by step mode which u can easily trace the exact location at which u r code is breaking...

Automating Eclipse tasks

I'm currently looking for ways to automate some tasks in Eclipse.
For instance, let's say I have a couple of ant files that I'll want to run a couple of times per hour. Being able to assign a hot key to each one of them, so that I could easily run them without having to click, bring the context menu up and click again would bring joy into my life.
Other example would be build/run configurations. I have a couple of them on my project and I'd love to have a way of running each one of them with a different hot key configuration.
Moreover, the very nature of a project I'm currently working on involves a lot of experimentation and trying, so having to click and use my mouse a lot is definitely driving me insane. There are other similar things that I would like to get automated as well (for example, each time I do a commit I'd like to also run some command over my project's folder, etc).
Is there some tool for Eclipse(or outside it) that'll somehow allow me to automate these kinds of tasks? Would Vim for Eclipse help me anyhow?
After some years coding I feel like I have hit a stone wall. I came to the conclusion that I am losing way too much time with my mouse. Yes, I know that a lot of Eclipse actions have correspondent hot keys, but a lot of others don't. I want the ultimate solution !
There are several solutions:
Use a console. Consoles allow to remember the last commands (on Unix, you can even search). So instead of mouse-fu, it's Alt-TabUpReturn
There was Eclipse Monkey to script Eclipse. Not sure if it still works but it might.
On Sourceforge is Practical Macro. No documentation that I could find, though.
EclipseShell might also work, not sure.
Update (Year 2022). Aaron has provided many options in his answer. It seems any of those are working. I am going to try the old ant builder.
https://www.vogella.com/tutorials/ApacheAnt/article.html