2012-06-19 5 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 
} 

내가 'Last 45 Days' & DIV로부터 검색된 값 [8] & 위 코드에서 V7 저장 CMD로부터 입력되는 임계 값은 ('Last 45 Days') 동일하다. 그러나 if 루프가 발생하면 작업을 수행하지 않습니다. 이러한 종류의 문자열을 비교하는 다른 방법이 있습니까?perl에서 문자열을 비교하는 방법은 무엇입니까?

+1

예를 들어,'ord'를 사용하여 보이지 않게 뭔가 ​​다른 (공백 등의 다른 종류)가 있는지 각 캐릭터의 진수를 덤프하십시오. ''eq'와 같은 단순한 것이 기대하는 것을하지 않는다면, "글쎄,이 두 문자열에 대한 차이점은 무엇입니까?" (STABLE) : 픽 사용'의 출력을 표시 – DavidO

+0

; $ critical을 덤프하십시오. 난 45 일 마지막 V7 및 중요한, 모두 인쇄 같은 값의 값을 인쇄 할 때 $ v7' – daxim

답변

2

당신은 아마 중요한 $에 추가 된 줄 바꿈이있다. chomp ($ critical)로 제거해보십시오. 로 Kludas는 말한다

+0

를 덤프합니다. 이것을 할 수있는 다른 방법이 있습니까? –

+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의 문제이다.

관련 문제