селен: нажав на первую ссылку на странице результатов - PullRequest
0 голосов
/ 23 мая 2011

Я тестирую страницу, похожую на поиск Google, где вы вводите условия поиска в предоставленном текстовом поле и нажимаете кнопку Поиск, и на следующей странице возвращается набор результатов, соответствующих вашему запросу. Все эти результаты представляют собой ссылки на документы (файлы документов) и являются случайными в зависимости от искомого текста. У меня проблема с переходом по первой ссылке на результаты. Я записываю шаги, используя Selene IDE, но когда я запускаю тесты, он терпит неудачу в тот момент, когда он должен нажать на первую ссылку результатов. Я получаю ошибку:

Selenium.SeleniumException: ERROR: Command execution failure. Please search the forum at http://clearspace.openqa.org for error details from the log window.  The error message is: Permission denied

Я пробовал это двумя способами:

selenium.Click("xpath=//html/body/form/div[2]/div[3]/div[3]/table/tbody/tr/td[2]/span/a/");
selenium.Click("xpath=//span[contains(@class,'ResultList_Title_Link')][1]/a");

Когда я щелкаю правой кнопкой мыши первую ссылку на результаты и выполняю элемент проверки, я вижу:

<w_lit_documenttitle wid="82e0-9888a350e66b">MEMORANDUM OF <span style="background-color:#FFFF66;color:#333333;font-weight:bold" name="wlCitedDoc" id="wlCitedDoc">LAW</span> COMPLAINT</w_lit_documenttitle>

Xpath для вышеупомянутого:

/html/body/form/div[2]/div[3]/div[3]/table/tbody/tr/td[2]/span/a/w_lit_documenttitle

Ответы [ 4 ]

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

Я полагаю, что вы должны делать это динамически, как вы говорите, нажимая FIRST LINK.

после загрузки страницы результатов со всеми результатами в виде ссылок, // если идентификаторы определены для каждогоссылка, которую вы собираетесь щелкнуть

String [] links = selenium.getAllLinks ();

для (ссылка на строку: ссылки)

selenium.click (ссылка);

// если идентификаторы не определены

selenium.getEval ("window.document.getElementsByTagName ('a') [0] .click ()");// это нажать на первую ссылку

надеюсь, это то, что вы ищете

1 голос
/ 23 мая 2011

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

0 голосов
/ 24 мая 2011

Поскольку сообщение об ошибке «Отказано в доступе», вам, вероятно, следует попытаться выяснить, какой элемент действительно определяет вашу ссылку.Используя метод щелчка Selenium, вы можете щелкать по интерактивным элементам, таким как элементы и кнопки, но вы должны указать их , а не некоторую часть текста внутри элемента.

0 голосов
/ 23 мая 2011

Согласитесь с @Ken Pespisa. Я неравнодушен к использованию CSS в качестве идентификатора. Извлеките HTML (используя Firebug) для 3-4 ссылок, возвращаемых поиском, а затем определите какой-то общий атрибут. Затем вы можете создать идентификатор CSS, используя этот атрибут. Если вам нужно просто нажать на первую ссылку, подойдет общий атрибут. Для конкретной ссылки сначала нужно подтвердить ее наличие, а затем щелкнуть по ней.

Вот пример CSS-идентификатора с использованием вашего примера HTML:

selenium.click("css=span#wlCitedDoc[name=wlCitedDoc]");
...