Выбор элемента правой кнопкой мыши по папке в Windows - PullRequest
1 голос
/ 08 апреля 2019

Как часть моего теста автоматизации, я должен щелкнуть правой кнопкой мыши по папке и выбрать один из вариантов, используя Perl в Windows10.

Перейти к «C: \ MyProject \», щелкнуть правой кнопкой мыши на«Журналы» присутствуют там и выбирают «Прикрепить к началу» (в качестве примера).

Я следовал некоторым из упомянутых здесь примеров - https://www.perl.com/pub/2005/08/11/win32guitest.html/ и здесь - https://metacpan.org/pod/Win32::GuiTest::Examples. Iпопробовал это сделать используя Win32 :: GuiTest.

Я могу открыть проводник с каталогом, выбрать папку и сделать правый клик.Однако я не могу выбрать опцию после щелчка правой кнопкой мыши.

use strict;
use warnings;
use Data::Dumper;

use Win32::GuiTest qw(:ALL);

$Win32::GuiTest::debug = 0;

sub bring_window_to_front {
     my $window  = shift;
     my $success = 1;

     if ( SetActiveWindow($window) ) {
         print "* Successfully set the window id: $window active\n";
     }
     else {
         print "* Could not set the window id: $window active\n";
         $success = 0;
     }
     if ( SetForegroundWindow($window) ) {
         print "* Window id: $window brought to foreground\n";
     }
     else {
         print "* Window id: $window could not be brought to foreground\n";
         $success = 0;
     }
     return $success;
}

my $explorer_path = "%windir%/explorer.exe";
my $folder_path = "C:\\MyProject";

# Open the location
system ($explorer_path, $folder_path);
sleep 2;

my @whnds = FindWindowLike( undef, "^MyProject", "" );
if( !@whnds ){
    die "Cannot find window with title/caption MyProject\n";
}
else{
    printf( "Window handle of MyProject is %x\n", $whnds[ 0 ] );
}

sleep 2;

# select the logs directory
SendKeys("logs");
# Send the right click button
SendKeys("{APP}");
sleep 2;

#### Till here everything is working fine
#### I am able to do right click, but unable to select any option. Hitting a road block here
#### Tried these but no result

# MouseClick('Pin to Start');
# MenuSelect('Pin to Start');
# PushChildButton($whnds[ 0 ],"Pin to Start");

Одна вещь, которую я все еще задаюсь вопросом, иду ли я в правильном направлении.Я использую правильный модуль, или эта работа для некоторых других модулей (Win32 :: GUI или Win32 :: OLE?).

...