Получить текущий URL с AppiumLibrary - RobotFramework
Я использую AppiumLibrary с RobotFramework для тестирования просмотра веб-страниц на Android. В нескольких тестах мне нужно выяснить, какой текущий URL был направлен пользователю после нажатия на ссылку.
Базовый пример теста:
Test Appium
AppiumLibrary.Open Application http://localhost:4723/wd/hub platformName=Android platformVersion=6.0.1 deviceName=0815f853b6d22c05 browserName=default
AppiumLibrary.Go To Url https://www.amazon.com/
sleep 5s
${current_url} get current url
log to console ${current_url}
В отличие от SeleniumLibrary, AppiumLibrary не имеет клавиш для этого, поэтому мне нужно создать собственное ключевое слово для получения текущего URL в python. Я попробовал несколько вещей, глядя на исходный код AppiumLibrary, а также на модуль Appium-Python-Client, который реализует Appium Webdriver для python. Но я не нашел, как получить текущий URL, который Chrome показывает пользователю. Любые советы о том, где я должен искать решение?
2 ответа
Я не мог найти, как заставить это работать с новым ключевым словом. По сути, я не смог найти, как получить доступ к драйверу Selenium в драйвере Appium, который реализует метод для этого, но я получил очень простой и элегантный ответ от katchdoze в канале AppiumLibrary о слабой робототехнике. Это так просто, как:
Test Appium
AppiumLibrary.Open Application http://localhost:4723/wd/hub platformName=Android platformVersion=6.0.1 deviceName=0815f853b6d22c05 browserName=Chrome
AppiumLibrary.Go To Url https://www.amazon.com/
sleep 5s
${current_url} execute script return window.top.location.href.toString()
log to console ${current_url}
Надеюсь, что это помогает другим.
Я не знаком с Appium, но из того, что я знаю о среде Robot, должно работать следующее:
AppiumExtended.py
from appium import webdriver
def get_url():
url = driver.current_url()
return url
testScript.robot
*** Settings ***
Library /path/to/AppiumExtended.py
Library Other libraries
*** Test cases ***
Test to get url
${url} Get Url
Log to console ${url}