Selenium не распознает путь CSS для второго элемента на странице - PullRequest
2 голосов
/ 06 июня 2011

Я пытаюсь использовать селектор CSS, чтобы щелкнуть ссылку в Selenium, но она не может ее распознать.

Ссылка "Отмена" появляется в двух местах на странице.

xpath для первой ссылки отмены: //html/body/div[@id='c_account']/div[@id='a_returns']/div[@id='container']/div[@id='main']/div[@id='main_col']/div/div[@id='create-return']/div[1]/div/a[2]/span

xpath для второй ссылки: /html/body/div[@id='c_account']/div[@id='a_returns']/div[@id='container']/div[@id='main']/div[@id='main_col']/div/div[@id='create-return']/div[4]/div/a[2]/span

Когда я проверяю обе ссылки в Firebug, я получаю один и тот же путь CSS. html body.p div#c_account.c_wrapper div#a_returns.a_wrapper div#container div#main div#main_col div.main_content div#create-return div.return-process-actions div.return-process-action-buttons a.return-process-cancel

И когда я использую Selenium, чтобы щелкнуть по второй ссылке, она щелкает по первой, потому что путь css одинаков для обеих.

Есть ли способ различить две ссылки по пути css?

Ответы [ 2 ]

1 голос
/ 06 июня 2011

Используйте x: nth-child (n)

Найдите этот сайт: http://net.tutsplus.com/tutorials/html-css-techniques/the-30-css-selectors-you-must-memorize/ ... вам нужно # 22 * ​​1005 *

Кроме того, вам действительно может не понадобиться такой длинный селектор CSS, вы можете просто использовать


a.return-process-cancel:nth-child(1)  
a.return-process-cancel:nth-child(2)
0 голосов
/ 06 июня 2011

В долгосрочной перспективе было бы лучше добавить id со значимым именем к ссылкам, по которым вы хотите перейти. Ваш тест будет намного легче читать позже, когда у вас будут строки типа

selenium.click("firstCancelLink");

чем

selenium.click("css=html body.p div#c_account.c_wrapper div#a_returns.a_wrapper div#container div#main div#main_col div.main_content div#create-return div.return-process-actions div.return-process-action-buttons a.return-process-cancel");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...