Удаленка для jenkins+selenide+selenoid+allure+docker спецов на 2-3 часа в день. 100% remote! Присоединиться к проекту

Получить первую ссылку со страницы результата поиска гугла и открыть последовательно все ссылки первой страницы и проверить на них наличие слова - запроса поиска

robot-framework
testng
Теги: #<Tag:0x00007fedb9b7a328> #<Tag:0x00007fedb9b7a1c0>

(Necrosium) #1

Привет.
Есть тест кейс

  1. Открыть гугл.
  2. Ввести в строку поиска запрос, к примеру “google”
  3. Нажать кнопку поиска.
  4. На странице результатов поиска убедиться, что первая ссылка ведет на сайт google
  5. Открыть поочередно все ссылки со страницы результата поиска и на каждой странице убедиться, что присутствует слово нашего запроса “google”

C 4 и 5 пунктом возникли сложности. Средствами робота не знаю как это реализовать, но есть небольшие знания JS. Попробовал через JS, но оно не отрабатывает так, как нужно.

*** Keywords ***
Given search engine should be opened
Open browser ${search_page} ${browser}
Maximize Browser Window
Location should contain ${search_page}

search field is filled
Input text ${search_field_locator} ${search_request}

search btn is clicked
Click Element ${search_btn_locator}

search result page is opened
Location should contain ${search_page}
Location should contain ${search_request}
Log Location

check that Google has the leading place in the result list
Execute JavaScript function test(){document.getElementsByClassName(’_Rm’)[0].innerHTML};

open each link and check that Google word is present on each page
Execute JavaScript var results = document.getElementsByClassName(‘r’);for(var i=0;i<results.length;i++){console.log(results[i].getElementsByTagName(‘a’)[0].click());var html = document.getElementsByTagName(‘html’)[0];var text = html.innerHTML;/google/i.test(text);}

В пункте 4 проблема в том, что при выполнении JS я не знаю как вывести результат в консоль робота. В консоли браузера эта функция отрабатывает и отдает первую ссылку по результатам поиска.

В пункте 5 проблема в том, что выполняя этот код, робот в итоге открывает только последнюю ссылку со страницы результатов поиска.

Есть ли возможность силами самого робота реализовать пункты 4 и 5 ?


(rmerkushin) #2

Проверяйте текст ссылки через сам робот. JS тут лишний.

З.Ы.: на всякий случай, чтобы JS код что то вернул просто допишите перед выражением return


(Necrosium) #3

пытаюсь через сам робот открывать первую ссылку с гугла.
взял локатор первой ссылки “xpath=//*[@id=“rso”]/div/div/div[1]/div/h3/a” но пишет, что не находит элемент по этому пути.

css селектор я получаю div.g:nth-child(1) > div:nth-child(1) > h3:nth-child(1) > a:nth-child(1)… как его преобразовать в съедобный для робота вид к сожалению не знаю.


(rmerkushin) #4

Зачем вы экранируете кавычки?)

попробуйте следующее:

xpath=(//*[@id='rso']//h3)[1]/a

(Necrosium) #5

Перепроверил, оба xpath правильные и тот который я отписал, и ваш (ваш компактней это большой плюс :slight_smile: , проблема была в том, что я задержку после нажатия на поиск не поставил, и автотест отрабатывал быстрее, чем прогружалась страница результатов поиска, соответственно, элемента по этому пути еще не существовало и он выдавал ошибку, что элемент не найден.

Буду крайне благодарен, если подскажите способ открывать ссылки в новой вкладке, мне их автотестом все с первой страницы результатов нужно открыть, поэтому всю картину портит открытие ссылки в том же окне.


(rmerkushin) #6

Либо через JS открываете новый таб либо через Press Key с указанием ctrl + t. Потом переключаетесь на таб и в нем переходите по ссылке.

З.Ы.: возможно есть хоткеи на открытие линки в новом табе, тогда можно попробовать через тот же Press Key заслать его.