Как щелкнуть скрытые угловые элементы в Selenium2Library с помощью Robot framework

У меня есть гиперссылка на мою веб-страницу, она соответствует, когда я нахожу элемент через Xpath. Когда я выполняю то же самое, он говорит:

.//span[@translate='home.onboarding.name '] не соответствует ни одному элементу

Я пробовал то же самое с помощью selenium webdriver, и он выполняется. Пожалуйста, помогите мне преобразовать тот же синтаксис в Robot Framework с помощью Selenium2library или любого альтернативного варианта поиска скрытых элементов. Для справки проверьте снимок экрана по следующей ссылке. Xpath и изображение элемента Inscpect для справки Любая помощь будет оценено. Спасибо.

Пример кода Selenium:

element = driver.find_element_by_xpath("//span[@translate='aside.nav.Operate.OnBoardDevices']")
driver.execute_script("$(arguments[0]).click();",element)

Пример кода РФ:

Click Element   xpath = //span[text()='CAMBIUM'] 
Sleep   3
Click Element   xpath = //span[@translate='home.onboarding.name']

person Auto-learner    schedule 10.05.2016    source источник
comment
Так в чем именно заключается ваша ошибка? не видно или не совпало? Пожалуйста, покажите нам также код робота. Спасибо   -  person jim    schedule 10.05.2016
comment
Откройте браузер $ {cnMaestro_URL} $ {Browser_Chrome} Нажмите кнопку Войти Введите текст name = email $ {cloud_Username} Введите текст имя = пароль $ {cloud_Password} Нажмите кнопку Войти Нажмите элемент id = accountDetails-Menu Нажмите элемент xpath = // span [text () = 'CAMBIUM'] Sleep 3 полужирный Щелкните элемент xpath = //span[@translate='home.onboarding.name '] Введите текст name = claimdevice 42-89-56-67 -B0-0C, D8: D8: 5F: 3B: 57: 0E Нажмите кнопку Заявить устройства в спящий режим 5 Выберите «Отменить» при следующем подтверждении. Закройте браузер.   -  person Auto-learner    schedule 10.05.2016
comment
Джим xpath = //span[@translate='home.onboarding.name '] - это тот, который я пытаюсь щелкнуть. Этот элемент доступен для щелчка через веб-драйвер, который я упомянул в 1-м комментарии   -  person Auto-learner    schedule 10.05.2016
comment
Каков фактический текст ошибки?   -  person jim    schedule 10.05.2016
comment
@jim - это ошибка, которую я получаю ValueError: локатор элемента 'xpath = //span[@translate='home.onboarding.name'] 'не соответствует ни одному элементу. Не могли бы вы проверить Xpath и проверить изображение элемента для справки в 1-м комментарии для получения дополнительной информации .. Большое спасибо за ваши ответы   -  person Auto-learner    schedule 10.05.2016
comment
Вы проверили (визуально или с помощью снимка экрана), что драйвер находится на правильной странице для этого ошибочного шага?   -  person jim    schedule 10.05.2016
comment
Я подозреваю, что это проблема времени, если вы думаете, что элемент виден в момент сбоя. У вас есть тестовый снимок экрана при сбое? Вы пробовали заснуть перед тем, как использовать элемент в качестве быстрой проверки, чтобы исключить это?   -  person shicky    schedule 10.05.2016
comment
Я проверил, сделав снимок экрана, и это была пустая страница (время ожидания было 20 секунд). Но соотношение успешности загрузки страницы занимает 5-20 секунд случайным образом. Есть ли способ выполнить следующее ключевое слово после того, как элемент станет видимым.   -  person Auto-learner    schedule 10.05.2016
comment
Да, есть. Подождите, пока элемент не станет видимым robotframework.org/Selenium2Library. /. Ваше приложение случайно написано с использованием Angular?   -  person jim    schedule 10.05.2016
comment
@jim Да, мое приложение написано на Angular JS. но ваш комментарий решил мой вопрос. Я выполнил 10 раз, и он не потерпел неудачу. большое спасибо . Я добавил это ключевое слово перед "Подождать, пока элемент не станет видимым" xpath = // h1 [text () = 'Welcome'] 60   -  person Auto-learner    schedule 11.05.2016
comment
Я отправил официальный ответ. Пожалуйста, отметьте это правильно, если это действительно решило вашу проблему. Также обратите внимание на расширенную библиотеку, о которой я упоминал.   -  person jim    schedule 11.05.2016
comment
Спасибо за ответы @jim. Я пройдусь по расширенной библиотеке selenium2library   -  person Auto-learner    schedule 11.05.2016


Ответы (1)


Вы можете использовать Подождите, пока элемент не станет видимым , чтобы убедиться, что элемент действительно доступен для нажатия.

Однако, как вы упомянули в комментариях, что ваше приложение использует AngularJS, я должен предложить вам переключиться с Selenium2Library на ExtendedSelenium2Library. Он имеет встроенную поддержку ожидания элементов в Angular.

person jim    schedule 11.05.2016