使用 AppiumLibrary - RobotFramework 获取当前 URL

Get current URL with AppiumLibrary - RobotFramework

我将 AppiumLibrary 与 RobotFramework 结合使用来测试 Android 上的网页浏览。在几个测试中,我需要找出用户在单击 link 后被定向到的当前 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 没有关键字来执行此操作,因此我必须为 get current url in python 创建自己的关键字.我已经尝试了几种方法来查看 AppiumLibrary 源代码以及为 python 实现 Appium Webdriver 的 Appium-Python-Client 模块。但是我还没有找到如何获取 chrome 显示给用户的当前 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}

Appium - Get url command

我找不到如何让它与新关键字一起使用。基本上,我找不到如何在实现该方法的 Appium 驱动程序中访问 Selenium 驱动程序,但我在 slack robotframework 的 AppiumLibrary 频道中从 katchdoze 得到了一个简单而优雅的答案。很简单:

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}

希望对其他人有所帮助。