Как да намеря динамично генерирани редове и колони със Selenium?

+3 гласа
405 прегледа
попитан 2016 март 17 от Krasimir.Nikolov. (1,920 точки)
Имам слендия казус, тествам сайт, който динамично генерира таблица с редове и колони. Искам да клинкна на бутон, който е в края на таблицата. Как да го направя това със Selenium?

3 отговори

+3 гласа
отговорени 2016 март 18 от StefanHr (860 точки)
избран 2016 март 18 от Krasimir.Nikolov.
 
Най-добър отговор

Може да използваш xpath, за да намериш webelement-a, който ти трябва. Вариантите са да ползваш AbsolutePath или RelativePath. С AbsolutePath не трябва да ползваш ID на елемента, което се създава динамично. 

Пример за AbsolutePath:

html/body/div[2]/div[2]/div/div/div/a/button

За да създадеш AbsolutePath може да си инсталираш firebug plugin на FireFox. Там имаш опция да избереш Absolute или Relative path.

+3 гласа
отговорени 2016 март 18 от penkoyordanov (320 точки)
И аз смятам че със xpath ще се получи. Аз ползвам един полезен plugin за Chrome, "Xpath Checker", с който да видиш дали правилно си построил xpath. Но според мен е добре да ползваш релативен.
+1 глас
отговорени 2016 март 22 от Kaloyan Bratoev (450 точки)

Само да вметна, че AboslutePath, не е много стабилно решение, защото даваш директния път до елемента / контролата. Ако се промени структурата на страницата дори и минимално ще ти се счупи локатора. Добавили са div преди твоя и той вече е на трето място:

html/body/div[2]/div[2]/div/div/div/a/button
html/body/div[3]/div[2]/div/div/div/a/button
Едно от стотиците видеа на индийци, като следващото е "Locating Dynamic Contents":
https://www.youtube.com/watch?v=1Gzt7lNgykQ
...