При нажатии на несколько ссылок часть динамически генерируется - PullRequest
0 голосов
/ 20 апреля 2009

Я новичок в Selenium и в вопросах тестирования. Я пытаюсь захватить идентификатор элемента гиперссылки, который динамически генерируется частично. Действие клика записывается, как показано ниже, когда я делаю клик в Selen, части, выделенные жирным шрифтом, генерируются динамически, их много на моей странице и они могут отличаться на разных сайтах (я тестирую cms). Я хотел бы захватить и нажать на любой. Это то, что я пытался сделать с тех пор:

storeAttribute | // button @ class onclick = "setLocation (javascript {baseUrlSelection ()} ['/ checkout / cart / add / uenc / (a-zA-Z0-9) / product / (0-9) ] '') "| MyID


эхо | $ {myid} |


clickAndWait | $ {MyID [0]}

не работает Мои ссылки выглядят так, когда действие клика записано в селене: бутон [@ OnClick = "setLocation ( 'http://localhost/mydomaine/index.php/checkout/cart/add/uenc/aHR0cDovL2xvY2FsaG9zdC9NYWdlbnRvSGls

YWlyZURlbW9WMi9tYWdlbnRvZGVtb0hpbGFpcmVWMi9pbmRleC5waHAvY2F0ZWdvcmllMS5odG1sP19fX1NJRD1V / продукт / 1 / ') "> Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 21 апреля 2009

Вы используете Selenium IDE? Вероятно, было бы намного проще сделать что-то, используя другие среды разработки, однако, если вы действительно хотите сделать цикл: Получить пользовательское расширение зацикливания с этой страницы и запустите такой скрипт.

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. Что делает javascript, так это переименовывает все входные данные на странице, которые соответствуют шаблону RegEx (который вам, вероятно, нужно будет изменить, чтобы он соответствовал вашим идентификаторам кнопок), на последовательный идентификатор, чтобы вы могли легко просматривать их. Если вы можете использовать другой шаблон, не стесняйтесь.

Javascript, адаптированный с здесь

0 голосов
/ 20 апреля 2009

Вы можете использовать функцию xpath contains (), чтобы найти элементы:

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

Также хорошей идеей будет ссылаться на элементы не по их атрибуту onclick. Идентификатор или имя будет хорошим выбором.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...