Placing the cursor on one of the buttons and clicking on it



my ($x, $y, $width, $height) = GetWindowPos($Main);
print "$x $y $width $height\n";

my $button_width = $width/5;
my $button_height = $height*0.8/8;
MoveMouseAbs($x + 2.5 * $button_width, $y+$height * 0.2 + 5.5 * $button_height);

ClickMouseButton M_LEFT;

Observing the xcalc application we see that it has 5 buttons in a row and 8 in a column. At the top of the application there is another window which is about 20% of the total height, full width.

So first we calculate the size of a button and then the center of button "5".

perl examples/X/xcalc07.pl


examples/X/xcalc07.pl
#!/usr/bin/perl

use strict;
use warnings;

use X11::GUITest qw(:ALL);

StartApp('xcalc');

my ($Main) = WaitWindowViewable('Calculator');
if (!$Main) {
  die("Couldn't find xcalc window in time!");
}
print "Main: $Main\n";

my $Focus = GetInputFocus();
print "Focus: $Focus\n";

if ($Focus != $Main) {
   die "The focus is not on the main window or you have two xcalcs open\n";
}

my ($x, $y, $width, $height) = GetWindowPos($Main);
print "$x $y $width $height\n";

my $button_width = $width/5;
my $button_height = $height*0.8/8;
MoveMouseAbs($x + 2.5 * $button_width, $y+$height * 0.2 + 5.5 * $button_height);
ClickMouseButton M_LEFT;

sleep(2);


MoveMouseAbs($x+2, $y-2);
ClickMouseButton M_LEFT;
SendKeys('c');