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
#!/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');