Perl-Selenium Helpful String Manipulations
Below are the string functions I found helpful during scripting in my current project using Selenium in Perl language:
Split(/PATTERN/,EXPR)
- Splits the string EXPR into a list of strings based on given PATTERN and returns that list.
# Scenario: Clicking Email link opens new window. Verify new location/URL displayed is correct
# Email element: <a onclick=”window.open(‘http:test.url’,'EMAIL’,'width=730,height=450,status=yes,toolbar=no,menubar=no,location=no’);” style=”color: rgb(38, 6, 2); font-size: 11px; text-decoration: underline;” href=”javascript: void(0);”>Email</a>
my $href = $sel->get_attribute("xpath=//html/body/div[2]/div[2]/div[2]/table/tbody/tr/td[2]/div[3]/a/\@onclick");
# $href = "window.open('http:test.url','EMAIL','width=730,height=450,status=yes,toolbar=no,menubar=no,location=no');"
my @url = split(/'+/, $href);
# @url = ['window.open(' , 'http:test.url' , ',' , 'EMAIL' , ',' , 'width=730,height=450,status=yes,toolbar=no,menubar=no,location=no' , ');' ]
Substr(EXPR,OFFSET,LENGTH)
- Extracts a substring out of EXPR and returns it based on defined OFFSET and LENGTH
# Scenario: Get the numeric value from the Total distance string element
my $str = $sel->get_text("css=div.olPopupContent>div.mainbubblecontent>div.mainbubbletabcontent>div.activetabcontent>div:nth-child(5)");
# $str = "Total distance: 100.25 miles";
my $distance = substr($str,16,5);
# $distance = '100.25';
Match (m/PATTERN/)
- match a string with a regular expression pattern
my $str = "Total distance: 100.25 miles";
if ($str =~ m/ \d*.\d* miles/) {
print "Pass";}
else{
print "Fail";}
Cmp_ok( $got, $op, $expected, $test_name )
– Test::More function that allows you to compare two arguments using any binary perl operator.
my $str = $sel->get_text("css=#panel > #collection_maneuvers > thead > tr > th");
# $str = "Total distance\: 100.25 miles"
cmp_ok($str, "=~", m/Total distance\: \d*.\d* miles/, "Verify estimated mileage is displayed");
Like( $got, qr/expected/, $test_name )
– Another Test::More function that evaluates any expression against a regular expression
my $str = $sel->get_text("css=#panel > #collection_poi > thead > tr.poi > th");
# $str = "5 locations found in your area"
like($str, qr/\d* locations found in your area/, "Verify number of locations is displayed");
Also came across this Perl documentation link (http://perldoc.perl.org) which is direct and comprehensive.
Recent Comments