gpt4 book ai didi

python - Robot Framework - 将 Appium 驱动程序传递给 python 脚本

转载 作者:行者123 更新时间:2023-11-28 16:36:57 25 4
gpt4 key购买 nike

我正在使用 Python 将 Robot Framework 与 Appium 集成。但是我不知道如何将在机器人框架中创建的 Appium 驱动程序传递给自定义 python 脚本。

我的环境:

  • Mac 操作系统 - 小牛
  • Appium 1.2(通过自制软件安装)
  • 最新的机器人框架(通过 pip 安装)
  • 用于机器人框架的最新 Appium 库(通过 pip 安装)

我在 Python 中有一个可用的 Appium 脚本,但我想开始使用 Robot Framework 来处理实际测试。

工作 python 脚本的部分代码:

wd = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
wd.find_element_by_name("Start").click()
wd.find_element_by_xpath("//UIAApplication[1]/UIAWindow[1]/UIATableView[1]/UIATableCell[1]").click()
wd.execute_script("var vKeyboard = target.frontMostApp().keyboard(); vKeyboard.typeString(\"Test Text\");")
wd.execute_script("var vKeyboard = target.frontMostApp().keyboard(); vKeyboard.buttons()['Return'].tap();")

如您所见,由于应用程序的工作方式,我需要将 execute_script 用作脚本的一部分。

机器人框架的 Appium 库没有公开 execute_script,所以我需要在 python 库中编写自己的脚本。

这是我开始的机器人测试脚本,它会一直运行到我需要执行脚本的时候:

TestStart
Open Application ${REMOTE_URL} ${PLATFORM_NAME} ${PLATFORM_VERSION} ${DEVICE_NAME} ${APP}
Click Element name=Start
Click Element xpath=//UIAApplication[1]/UIAWindow[1]/UIATableView[1]/UIATableCell[1]

我的问题是如何获取在 Open Application 中创建的驱动程序实例并将其传递给 Python 脚本?

我有一个包含以下内容的 python 脚本:

def KeyboardType(driver):
driver.execute_script("var vKeyboard = target.frontMostApp().keyboard(); vKeyboard.typeString(\"hi there\");")

但是,我似乎无法将驱动程序从 Robot Framework 脚本传递到此 python 脚本。

我尝试通过以下方式将 Open Application 设置为一个变量:

${Driver}  Open Application   ${REMOTE_URL}    ${PLATFORM_NAME}    ${PLATFORM_VERSION}    ${DEVICE_NAME}    ${APP}
KeyboardType ${Driver}

但我收到错误:

AttributeError: 'str' 对象没有属性 'execute_script'

我还尝试将 Get Current Context 的结果传递给 python 脚本,但随后我得到:

AttributeError: 'unicode' 对象没有属性 'execute_script'

如何将 Robot Framework 创建的驱动程序传递到 python 脚本中?

最佳答案

我目前不使用 appium,所以我无法给出明确的答案。然而,关于 selenium 的类似问题被问及,有人需要实际的 webdriver 对象。见问题Pass existing Webdriver object to custom Python library for Robot Framework

简短的回答是,您可以尝试对 appium 库进行子类化,以便您的关键字可以访问所有 appium 内部结构,或者您可以通过调用 BuiltIn().get_library_instance(' Selenium2Library.

有关后一种技术的更多信息,请参阅 Getting active library instance from Robot FrameworkRobot Framework User's Guide .

关于python - Robot Framework - 将 Appium 驱动程序传递给 python 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24889387/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com