How to achieve the click action of UAC window in UI automation - selenium

When automating with Selenium, a UAC (user account control) window pops up as shown in Figure, need accept the relevant license. I could not use the AutoIt tool to click that.
I am searching for a long time on Internet. But no use. Please help or try to give some ideas how to achieve this.

You can disable UAC on the machine you're running.
If you can't, try running as administrator.
BTW, this has nothing to do with Selenium. Maybe you meant the UI Automation framework by Microsoft.

There is a simple reason why you can't find any information on this topic - it is simply not possible. UAC is a security feature. The UI prompt runs on a secure desktop session. It cannot be automated. Allowing it would be a major security hole.

Related

Bixby Developer Studio keeps asking me to login

When I first launched Bixby Developer Studio, it greeted me with a startup screen with a Login button. I clicked on it and it opened a login page in my browser. I logged in that page using my Samsung developer account. The login was successful and a pop-up appeared asking me if I will allow the page to launch Developer Studio (which was already open at that point). I allowed it, but nothing happened; Developer Studio was still showing the startup screen.
I restarted the application but it again showed me that startup screen with the login button. If I click on the login button, it will just take me again to the login page in the browser. And then nothing would happen if I login again.
I'd suggest verifying if your browser is configured to accept cookies. If that information is verified and the problem still exists, there might be additional information in the ide.log file that can provide more insight
To get that information, follow these steps:
Note the time when you begin the next steps.
Go through the login process until you hit the point of failure.
From the IDE menu, click on Help -> Create Diagnostics Report. This
will popup a dialog that will point you to the location of the
diagnostics report, by default this location is
C:\Users\'User'\bixby-workspace\
Unzip the diagnostics report and look at the ide.log file for any
errors at the time of login.
Feel free to post the errors here or if you prefer, you can open a ticket with Bixby Support too.
There are a couple of points you could work on here -
In this case, I suggest you to keep the browser open in the background while clicking on the login button. I was facing the same issue and somehow it worked for me like this. This has been an issue on a Windows machine. On a Mac this problem is not faced till now.
You could restart the Bixby studio itself for logging in again.
Also, I suggest removing the browser cookies as told by shahnawaz above.
Do let us know if this still persists !
Thank you all for your suggestions. For some reason, it just started working right after I received dozens of Windows updates (it's been a few days since I logged in to my Windows account as I have been using Linux; I rarely use my Windows account now and I wish Bixby Studio was available in Linux too). So, I actually haven't tried any of your suggestions yet. Thanks again, anyways!

Sikulix/Jython UAC automation

I was wondering if anyone had any luck automating through UAC pop-ups during installer automation?
I have an existing Automated installer code but it fails at the UAC area due to Sikuli not using keyboard/mouse during this step...
Anyone had any luck here? or no a way to do this in Jython?
Thanks
The reason Sikuli doesn't work in this scenarios is because the UAC dialog is displayed in a "Secure desktop" which you can read more about here. Secure desktop prevents all interaction so even you attempt to take a screenshot of the UAC dialog itself, it will fail.
That being said, there is a workaround. You can disable switching to secure desktop by following these steps:
Run gpedit.msc
Under Computer Configuration\Windows Settings\Security Settings\Local Policies\SecurityOptions,
change "User Account Control: Switch to the secure desktop when prompting for elevation" to disabled.

running autoit/autohotkey scripts from server? or other automation alternatives?

I have some scripts (AutoIt) browsing YouTube for list of trending videos etc. It involves no mouse clicks (just keystrokes). The script takes a long time to finish and I can't use my PC during this time (it needs the window activated to work on it).
Is there anything I can do about this? Can these scripts run from a server or some stuff like that?
I've run into a similar problem: got to run automation with AutoIt on a Windows Server and the whole thing had got to be headless. Using Remote Desktop simply didin't work because then I'd had to keep a client opened and maximized all the time.
Short solution: install a VNC server in the Windows Server, open a client from another computer, log in and close the client. As the AutoIt script was being started by a Jenkins job, before closing the client the Jenkins applet had to be started via web interface.
By the way, I've had this idea from this post: How to run remote headless GUI automation.
As Johannes said, AutoIt probably wouldn't be suitable (and likewise AutoHotkey), but you could check out the many GUI and web testing frameworks that exist for other languages. With some of those, you can run a "headless" browser (a program that navigates the web just like a browser, but has no visible window); or you can run a standard browser on a virtual display like a Xvfb X11 server. This would be easiest if the server (or wherever it's going to run) is running a Unix-like OS, but it may be possible with Windows too.
Selenium Webdriver seems to be a very popular choice for scripting and testing actual browsers. It's natively Java but has bindings for languages like Ruby. It can also hook into something called HtmlUnit, which is also Java; that's one of the more popular headless browsers. Another (a relative newcomer) is phantom.js, which is in Javascript but (again) has bindings for other languages.
As far as I know this will not work unless the user account is logged on. You could try to see if you could convert it to an exe and run this as a service, but even then I don't think this will work. Let me know if you found out!
You can either:
Hide your window (SetWindowState #SW_HIDE) or something like that...
and use ControlClicks (if the they are original controls!)
or
Hide your window and use SendControl
or
use SendKeepActive
or
use OLEObjects like ie.au3 for automation.
Good Luck

Testing install procedure of a program requiring administrative privileges

I'm trying to write automated test, to ensure that the installer for my program works okay.
The program can be installed for all users (requires admin privs), or for current user (does not require admin privs). The program can also autoupdate itself, which in some cases requires admin privileges, and in some cases doesn't.
I'm looking for a way where I can have an automated test click "Yes, Allow" on the UAC dialogs, so I can write tests for all different scenarios, on many different operating systems, so that I can be confident when I make changes to the installer that I didn't break anything.
Obviously, the installer process itself cannot do this. However, I control the complete machine, and could easily start some sort of daemon process with administrative rights, that the testprogram could make a socket connection to, to request it to "please click ok on the UAC now".
I actually figured out how to do this while looking to answer a similar question about UAC. Here is what you can do:
Write a service that runs as SYSTEM.
Open the process token of the winlogon.exe instance running in your logon session.
Use that token to launch a helper process on the Winlogon desktop via CreateProcessAsUser.
At this point, you have a helper process running as SYSTEM in your logon session on the Winlogon (secure) desktop. From here you can use some kind of IPC mechanism to communicate from your automated test program to the helper process. In the helper process you can EnumDesktopWindows to find the UAC prompt. This is as far as I took it; I didn't actually try to simulate clicking Yes or No, but I don't see any reason why it wouldn't work. Also, I only tested on Windows 7 32-bit; I believe the UAC architecture is identical to Vista, but I didn't test on it.
It took me a while to figure all this out; I can provide some code if you want.
EDIT: Just as a follow up I added code to use FindWindow() to find the "Yes" button and I was able to successfully send it a BM_CLICK message; the UAC prompt went away and the application was allowed to run.
An alternative solution might be to turn UAC off
The least bad solution I've found so far is to run the tests in a VMWare session, and control the mouse/keyboard trough the vmware sdk. Would love to hear about other solutions
Remote Desktop to it or run it as a guest VM (using Virtual PC or whatever, just don't boot to it.) This is also the best way to take a screenshot or video of the UAC prompt.

Registering every Windows login try

I want to keep a log with the attempted log-in to a machine. The OS is Windows Embbeded Standard. Is it possible to make Windows execute an application or a script after every login attempt to enable me to save that information in my database?
EDIT:
Extract from Superuser:
"Here, you can set auditing to all types of events. I believe the one you want is "Audit logon events", Set it to Failure (or Success as well if you want).
All events will now get sent to Event Viewer. ..."
Is it possible to access the Event Viewer info via WMI?
From a security viewpoint, I would assume this would not be possible. But it is possible to write your specialized GINA library which would replace the standard login system of Windows. This was done to support fingerprint readers and smart card readers, and many other alternative login methods.
But out of curiosity, what kind of problem are you trying to solve here? Windows already has plenty of build-in functionality which can be analysed by anyone who can log in.
Follow this link to see how it's done in Windows 2003. I've checked with Windows XP on a virtual machine and it works exactly the same there. So I assume it also works in embedded XP versions.For reading the event log, this link from MSDN will be practical too. This will require .NET though, which is optional on Windows XP.
WMI might be a good place to start. You could use WMI (or another method) to query the security event log for sucessful/failed logon events, too.
http://www.computerperformance.co.uk/vbscript/wmi_event_log_administrator.htm