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');