2009-04-20 3 views
0

저는 셀렌과 테스트 문제를 처음으로 접했습니다. 동적으로 생성 된 하이퍼 링크 요소의 ID를 캡처하려고합니다. 셀렌에서 클릭하면 아래와 같이 클릭 동작이 기록됩니다. 굵게 표시된 부분이 동적으로 생성됩니다. 내 페이지에 많은 부분이 있으며 사이트마다 다를 수 있습니다 (CMS 테스트 중입니다). 나는 어느 하나를 붙잡고 클릭하고 싶습니다. 다음은 내가 시도한 작업입니다.동적으로 생성 된 여러 링크를 클릭하십시오.

storeAttribute | // button @ class onclick = " setLocation (자바 스크립트 {baseUrlSelection()} [ '/ checkout/cart/add/uenc/(a-zA-Z0-9) /product/(0-9)] " | myid


echo | $ {myid} |


clickAndWait | 클릭 조치가 셀레늄에 기록 될 때 $는 {대한 myid [0]}

그것은 내 링크가 작동하지 않습니다는 다음과 같습니다 부톤 섬 [@의 onclick = "에서 setLocation를 ('http://localhost/mydomaine/index.php/checkout/cart/add/uenc/aHR0cDovL2xvY2FsaG9zdC9NYWdlbnRvSGls

YWlyZURlbW9WMi9tYWdlbnRvZGVtb0hpbGFpcmVWMi9pbmRleC5waHAvY2F0ZWdvcmllMS5odG1sP19fX1NJRD1V/제품// ') "> 도와주세요.

+0

에서 적응? –

답변

0

당신은 XPath는이 항목의 위치를 ​​() 함수를 포함 사용할 수 있습니다

storeAttribute | //input[contains(@onclick,"setLocation('http://localhost/mydomaine/index.php/checkout/cart/add/uenc/")]@class | myid 
echo | ${myid} 
clickAndWait | //input[contains(@onclick,"setLocation('http://localhost/mydomaine/index.php/checkout/cart/add/uenc/")]@class 

또한 자신의 온 클릭 속성보다 다른 무언가에 의해 요소를 참조하는 것이 좋습니다. ID 나 이름이 좋은 선택이 될 것입니다.

1

Selenium IDE를 사용하고 있습니까? 그러나 아마도 다른 루핑 환경을 사용하여 뭔가를하는 것이 훨씬 쉬울 것입니다. 그러나 루핑을 실제로하고 싶다면 : Get the looping user-extension from this page 그리고 이와 같은 스크립트를 실행하십시오.

store | 0 | myCurrent 
storeEval | var pattern=new RegExp("\\w*http://localhost/mydomaine/index.php/checkout/cart/add\\w*");var i=0;var total=0;while(i<window.document.getElementsByTagName('input').length){if (window.document.getElementsByTagName('input')[i].id.match(pattern)){window.document.getElementsByTagName('input')[i].id = 'testID_' + total;total=total+1;}i=i+1;}total; | myTotal 
while | storedVars.myCurrent < storedVars.myTotal 
storeAttribute | //input[contains(@id,'testID_${myCurrent}')]@class | myid 
echo | ${myid} 
clickAndWait | //input[contains(@id,'testID_${myCurrent}')] 
store | javascript{storedVars.myCurrent++} 
endWhile 

이 버튼의 클릭은 무엇을합니까? 페이지 또는 그런 것을 다시 게시합니까? 그렇다면 storeEval | var 패턴 .... while 루프 내부. 자바 스크립트에서 수행하는 작업은 RegEx 패턴 (버튼 ID와 일치하도록 변경해야 할 수도 있음)과 일치하는 페이지의 모든 입력의 이름을 순차적 ID로 바꾸어 쉽게 반복 할 수 있도록하는 것입니다. 악용 할 수있는 패턴이 다른 경우 자유롭게 변경할 수 있습니다.

자바 스크립트는이 정리나요 here

관련 문제