diff --git a/t/lib/Selenium/Remote/Driver/FirefoxExtensions.pm b/t/lib/Selenium/Remote/Driver/FirefoxExtensions.pm index 20277345ff..7db31207bf 100644 --- a/t/lib/Selenium/Remote/Driver/FirefoxExtensions.pm +++ b/t/lib/Selenium/Remote/Driver/FirefoxExtensions.pm @@ -123,4 +123,20 @@ sub wait_for_text { return; } +sub move_and_click { + my ($self, $path, $type, $timeout) = @_; + return unless $path && $type; + $timeout = 5 unless $timeout; # seconds. Default timeout value if none is specified. + my $started = time(); + my $elapsed = time(); + while ($elapsed - $started <= $timeout){ + $elapsed = time(); + try{ + $self->move_action(element => $self->find_element($path, $type)); + $self->find_element($path, $type)->click(); + return 1; + }; + } + return; +} 1; diff --git a/t/selenium/controller_customer.t b/t/selenium/controller_customer.t index 61d43c2c81..499bd5f83f 100644 --- a/t/selenium/controller_customer.t +++ b/t/selenium/controller_customer.t @@ -68,10 +68,9 @@ diag("Check if successful"); $d->find_element('//div[contains(@class,"accordion-body")]//table//td[contains(text(),"Sipwise")]'); diag("Edit Fraud Limits"); -$d->scroll_to_element($d->find_element('//div[contains(@class,"accordion-heading")]//a[contains(text(),"Fraud Limits")]')); $d->find_element('//div[contains(@class,"accordion-heading")]//a[contains(text(),"Fraud Limits")]')->click(); -$d->move_action(element => $d->find_element('//*[@id="collapse_fraud"]/div/table/tbody/tr[1]/td//a[text()[contains(.,"Edit")]]')); -$d->find_element('//*[@id="collapse_fraud"]/div/table/tbody/tr[1]/td//a[text()[contains(.,"Edit")]]')->click(); +$d->scroll_to_element($d->find_element('//div[contains(@class,"accordion-heading")]//a[contains(text(),"Fraud Limits")]')); +$d->move_and_click('//*[@id="collapse_fraud"]//table//tr//td[text()[contains(.,"Monthly Settings")]]/../td//a[text()[contains(.,"Edit")]]', 'xpath'); diag("Do Edit Fraud Limits"); $d->fill_element('#fraud_interval_limit', 'css', "100");