【发布时间】:2014-09-13 09:24:42
【问题描述】:
我正在使用 Python 将 Robot Framework 与 Appium 集成。但是我不知道如何将在 Robot Framework 中创建的 Appium 驱动程序传递给自定义 python 脚本。
我的环境:
- Mac OS - 小牛队
- Appium 1.2(通过自制软件安装)
- 最新的机器人框架(通过 pip 安装)
- Robot 框架的最新 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\");")
但是,我似乎无法将驱动程序从机器人框架脚本传递给这个 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 脚本中?
【问题讨论】:
-
等一下,您是否为此使用了环境变量?尝试将 WD 传递给您的键盘脚本?
标签: python robotframework appium