| Test-A8N documentation | Contained in the Test-A8N distribution. |
goto page: /some/url goto page: PageName
Sets the current browser context to a page, either using the absolute path supplied, or using an abstract page name as defined by the page_mapping hash. Either set this at run-time, or override it in a subclass.
| Test-A8N documentation | Contained in the Test-A8N distribution. |
package Test::A8N::Fixture::Selenium; use warnings; use strict; use Moose::Role; use WWW::Selenium; our @EXCLUDE_METHODS = qw( page_mapping selenium_class selenium ); before 'DEMOLISH' => sub { my $self = shift; if (exists $self->ctxt->{selenium}) { $self->ctxt->{selenium}->stop(); } }; has 'selenium_class' => ( is => 'rw', required => 1, isa => 'Str', default => sub { "WWW::Selenium"; }, lazy => 1, ); sub page_mapping { my $self = shift; my ($url) = @_; my $base = $self->_get_metavar('selenium.browser_url'); $base =~ s/\/$//; return "$base$url"; } sub selenium { my $self = shift; return $self->ctxt->{selenium} if (exists $self->ctxt->{selenium}); my %args = ( host => $self->_get_metavar('selenium.server'), port => $self->_get_metavar('selenium.port'), browser => $self->_get_metavar('selenium.browser'), browser_url => $self->_get_metavar('selenium.browser_url'), ); foreach my $key (keys %args) { delete $args{$key} unless ($args{$key}); } $args{browser} = "*$args{browser}" if (exists $args{browser}); # Create, save and return a selenium object for this appliance my $class = $self->selenium_class; eval "use $class;"; die "$@\n" if $@; $self->ctxt->{selenium} = $class->new( %args ); $self->ctxt->{selenium}->start(); return $self->ctxt->{selenium}; }
sub goto_page { my $self = shift; my ($page) = @_; $self->selenium->open( $self->page_mapping($page) ); } 1; __END__