2011-01-21 10 views
0

이것은 XPath 구문에 대한 질문입니다.SeleniumRC/Perl 동적 XPath 선택기가 작동하지 않습니다.

각 제품 페이지에 여러 제품이있는 사이트에 여러 제품 페이지가 있습니다. 각 제품에는 장바구니에 추가 버튼에 대한 고유 한 ID가 있습니다. 고유 ID를 모두 반환하려고 노력 중이므로 가방에 몇 가지 제품을 추가 할 수 있습니다. XPath로 검색하는 것이 올바른 해결책 인 것 같습니다. 나는 XPath를 가진 HTML을 쿼리하고 반환하는 다음 코드가 고유 ID의 :

//a[@id!='quickview-link-PROD7029' and img[@alt='Quick Shop']]/@id 

올바르게 :

$XPATH_COUNT = $sel->get_xpath_count("//div[\@class='quick-info-link']/a"); 

@my_array; 
$my_array[0] = $sel->get_attribute("//div[\@class='quick-info-link']/a/\@id"); 
print $my_array[0]; 
$count = 0; 

while($count < $XPATH_COUNT) 
{ 
    $arrayCount=0; 
    $a = "//"; 

    foreach(@my_array) 
    { 
     $tmp = "a[\@id!='" . $my_array[$arrayCount] . "' and "; 
     $b .= $tmp; 
     $d .= "]"; 
     $arrayCount++; 
    } 

    $c = "img[\@alt='Quick Shop']"; 
    $e = $c . $d . "/\@id"; 
    $xpath_query = $a . $b . $e; 
    $my_array[$count] = $sel->get_attribute($xpath_query); 
    $count++; 
} 

이의 첫 번째 실행의 출력은 다음과 같습니다 XPath 쿼리는 quickview-link-PROD6945를 반환합니다. 두 번째 실행이 생산 : ERROR 내 SeleniumRC 터미널 창에서 오류가 발생합니다

//a[@id!='quickview-link-PROD7029' and a[@id!='quickview-link-PROD6945' and img[@alt='Quick Shop']]]/@id 

: 요소 [..xpath 쿼리를 ..] 세션을 찾을 수 없습니다.

페이지의 요소에 액세스하기 위해 색인을 사용할 수 있음을 알고 있습니다 (예 : [i]을 XPath 쿼리 끝에 추가). 그러나 이것은 Selenium에서 저에게 효과가있는 것은 아닙니다.

도움이 될 것입니다. 시간 내 주셔서 감사합니다, 스티브

+0

당신이 원하는 것을 분명하지 않다

은 당신이 정말 원하는 것은 같은 것입니다. 그 '@ id'는 정말로 고유하지 않습니까? 아니면 순 쿠키를 갖고 싶습니까? 이것은 순차적으로 XPath 표현식에 필터를 추가하여이 고유 ID에 대해 "반복"을 시도하는 것 같습니다. 나는 이것이 옳은 길이라고 생각하지 않는다 ... –

답변

1
//a[@id!='quickview-link-PROD7029' 
    and a[@id!='quickview-link-PROD6945' and 

img[@alt='Quick Shop'] ] ]/@id

Which throws an error in my SeleniumRC terminal window of ERROR: Element [..xpath query..] not found on session

당신이 XPath 표현식이 적용되는 XML 문서를 제공하는 노드 (들)을 선택하려는 설명 경우 크게 도움이 될 것이다. 이 필요한 정보없이

이 문제에 대한

가장 확실한 이유는 위의 표현은 몇 가지 특성을 가진 a 아이를 a 요소를 찾고 있다는 것입니다.

일반적으로 a 요소에는 a 자식이 없습니다. 이것은 조금 단순화 할 수

//a[@id != 'quickview-link-PROD7029' 
    and 
    @id != 'quickview-link-PROD6945' and img[@alt='Quick Shop'] 
    ]/@id 

:

//a[img[@alt='Quick Shop']/@id 
          [not(. = 'quickview-link-PROD7029' 
           or 
           . = 'quickview-link-PROD6945' 
           ) 
          ] 
관련 문제