2012-06-27 2 views
2
my $V1 = $sel->get_text("//body[\@id='ext-gen3']/div[14]/div[2]/div/div/div/div/div/div/div/div/div/div[2]/div/div/table/tbody/tr/td/div/div"); 
print($V1 . "\n"); 

위의 명령을 실행할 때 오류없이 v1을 인쇄 할 수있었습니다.변수에 저장된 xpath를 전달하는 방법은 무엇입니까?

내 목표는 약 20 개 정도의 값을 인쇄하는 것입니다. 그러나 각 변수에 대한 XPath는 조각에 따라 수행하는 대체 DIV [] 요소입니다.하지만 말. div 요소에만 (즉, table을 preeceeding div 요소가 div[2],로 대체해야하며, div[2] 모든 반복에 div[3] 교체해야합니다에 따라 다릅니다

잘못된 XPath는.

my $xpath = q(//body[\@id='ext-gen3']/div[14]/div[2]/div/div/div/div/div/div/div/div/div/div[2]/div/div/table/tbody/tr/td/div/div); 
for my $i (0,2) 
{  
my @nodes = split qr'/', $xpath;  
$nodes[16] .= "[$i]" unless 0 == $i;  
#say join '/', @nodes; } 
my @somenames = join('/',@nodes); 
#print "\n"; 
#print @somenames ; 
foreach my $val (@somenames) { 
    chomp($val); 
    #my @new_arr = $sel->get_text($val); 
    print "\n"; 
    print $val; ***this prints the xpath value which i needed*** 
    my $V1 = $sel->get_text("$val"); ***#i'm passing the same xpath here within double quotes but says as invalid xpath*** 
    print($V1 . "\n"); 
    my @new_arr = $sel->get_text("$val"); 
    } 
} 

내가 내가 그것을 할 수 있습니까? XPath를 전달하는 잘못된 방법을 다음과 같은 건가요?

답변

2

는 XPath는 문자열 with mine in the previous answer의 당신의 정의를 비교. 소속이 아닌 상업계 앞에 백 슬래시를 삽입했습니다.

+0

@ Daxim : 백 슬래시를 제거하더라도 필요한 내용이 인쇄됩니다. 하지만 그 값을 get_text ->()로 전달하면 유효하지 않은 xpath로 표시됩니다. 또 다른 것은 셀레늄 IDE에서 테스트 케이스를 실행하고 펄에서 그것을 내 보낸 후에 백 슬래시와 함께 나타난다. –

+0

조차도 두 용어를 if ($ xpath eq $ val)와 비교하면 두 결과가 동일하므로 출력됩니다. –

관련 문제