2012-06-19 3 views
1
use strict; 
use warnings; 
use Time::HiRes qw(sleep); 
use Test::WWW::Selenium; 
use Test::More "no_plan"; 
use Test::Exception; 
use Text::Table; 
our ($a,$critical); 

print "Enter text:"; 
$a = <>; 
print "Enter critical value:"; 
$critical = <>; 
print $a; 
print $critical; 
| 
| 
| 
| 
| 
$sel->click_ok("//div[\@class='x-combo-list-inner']/div[8]"); 
my $v7 = $sel->get_text("//div[\@class='x-combo-list-inner']/div[8]"); 
print($v7 . "\n"); 
print($critical . "\n"); 
if ($critical eq $v7) 
{ 
perform operations 
} 
else 
{ 
don't perform operation 
} 

Значение критического, которое я ввести с CMD я 'Last 45 Days' & значение извлекается из DIV [8] & хранится в v7 в приведенном выше коде также ('Last 45 Days') же. Но когда он встречает цикл if, он не выполняет операцию. Есть ли другие способы сравнить эти строки?Как сравнить строки в perl?

+1

Попробуйте сбросить октеты из каждой строки, чтобы увидеть, есть ли что-то невидимо другое (различные виды пробелов и т. Д.) Используйте 'ord', например. Если что-то простое, как 'eq', не делает то, что вы ожидаете, вы должны задать вопрос:« Ну, что * * отличается от этих двух строк? » – DavidO

+0

Показать вывод 'use Devel :: Peek; Dump $ критический; Дамп $ v7' – daxim

ответ

2

У вас, вероятно, есть новая строка, добавленная в критических ситуациях. Попробуйте удалить его с помощью chomp ($ критический);

+0

Когда я печатаю значение v7 и критически, оба печатают одно и то же значение Последние 45 дней. Есть ли другой способ сделать это? –

+0

@Jackie James: конечная новая строка будет невидимой в вашем выходе. Вы * должны * 'chomp' вводить с клавиатуры в любом случае, поскольку он * будет * содержать новую строку и не является частью данных, которые вас интересуют. – Borodin

+0

@ Kludas & Borodin: Большое спасибо. Я использовал chomp для удаления символа новой строки. –

0

Как говорит Клудас, более вероятно, что у вас есть новая линия в конце $critical. Вы, конечно, не видите код, который его удаляет, а строка, возвращаемая get_text, вряд ли закончится новой линией.

Предлагаю вам использовать Data::Dump (примечание НЕData::Dumper), чтобы отобразить ваши строки. После того, как вы установили модуль это просто вопрос

use Data::Dump; 

dd $critical; 
dd $v7; 

и любой не-Printables будет отображаться как соответствующий видимым код побега.

Смежные вопросы