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

2023-12-05

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

我的环境:

  • Mac 操作系统 - 小牛队
  • Appium 1.2(通过 homebrew 安装)
  • 最新的机器人框架(通过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();")

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

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

这是我的机器人测试脚本的开始,它一直工作到我需要execute_script:

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]

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

我有一个 python 脚本,其中包含以下内容:

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

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

我尝试通过以下方式将打开应用程序设置为变量:

${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 对象。查看问题将现有 Webdriver 对象传递给 Robot Framework 的自定义 Python 库

简而言之,您可以尝试对 appium 库进行子类化,以便您的关键字可以访问所有 appium 内部结构,或者您可以通过调用来获取该库的句柄BuiltIn().get_library_instance('Selenium2Library.

有关后一种技术的更多信息,请参见从 Robot Framework 获取活动库实例 in the 机器人框架用户指南.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Robot Framework - 将 Appium 驱动程序传递给 python 脚本 的相关文章

  • 在 Celery 任务中调用 Google Cloud API 永远不会返回

    我正在尝试拨打外部电话Google Cloud Natural Language API从一个内Celery任务 使用google cloud python包裹 问题是对 API 的调用永远不会返回 挂起 celery task def g
  • pandas DataFrame.join 的运行时间是多少(大“O”顺序)?

    这个问题更具概念性 理论性 与非常大的数据集的运行时间有关 所以我很抱歉没有一个最小的例子来展示 我有一堆来自两个不同传感器的数据帧 我需要最终将它们连接成两个very来自两个不同传感器的大数据帧 df snsr1 and df snsr2
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • Django Rest Framework 是否有第三方应用程序来自动生成 swagger.yaml 文件?

    我有大量的 API 端点编写在django rest framework并且不断增加和更新 如何创建和维护最新的 API 文档 我当前的版本是 Create swagger yaml文件并以某种方式在每次端点更改时自动生成 然后使用此文件作
  • 如何从Python中的函数返回多个值? [复制]

    这个问题在这里已经有答案了 如何从Python中的函数返回多个变量 您可以用逗号分隔要返回的值 def get name you code return first name last name 逗号表示它是一个元组 因此您可以用括号将值括
  • Python 3d 绘图设置固定色阶

    我正在尝试绘制两个 3d 数组 第一个数组的 z 值在范围内 0 15 0 15 第二个来自 0 001 0 001 当我绘图时 色标自动遵循数据范围 如何设置自定义比例 我不想看到 0 001 的浅色 而应该看到 0 15 的浅色 如何修
  • 为什么 web2py 在启动时崩溃?

    我正在尝试让 web2py 在 Ubuntu 机器上运行 所有文档似乎都表明要在 nix 系统上运行它 您需要下载源代码并执行以下操作 蟒蛇 web2py py 我抓住了source http www web2py com examples
  • GUI(输入和输出矩阵)?

    我需要创建一个 GUI 将数据输入到矩阵或表格中并读取此表单数据 完美的解决方案是限制输入表单仅允许float 例如 A 1 02 0 25 0 30 0 515 0 41 1 13 0 15 1 555 0 25 0 14 1 21 2
  • python的shutil.move()在linux上是原子的吗?

    我想知道python的shutil move在linux上是否是原子的 如果源文件和目标文件位于两个不同的分区上 行为是否不同 或者与它们存在于同一分区上时的行为相同吗 我更关心的是如果源文件和目标文件位于同一分区上 shutil move
  • Django 视图中的“请求”是什么

    在 Django 第一个应用程序的 Django 教程中 我们有 from django http import HttpResponse def index request return HttpResponse Hello world
  • pandas - 包含时间序列数据的堆积条形图

    我正在尝试使用时间序列数据在 pandas 中创建堆积条形图 DATE TYPE VOL 0 2010 01 01 Heavy 932 612903 1 2010 01 01 Light 370 612903 2 2010 01 01 Me
  • 如何使用 Python 3 检查目录是否包含文件

    我到处寻找这个答案但找不到 我正在尝试编写一个脚本来搜索特定的子文件夹 然后检查它是否包含任何文件 如果包含 则写出该文件夹的路径 我已经弄清楚了子文件夹搜索部分 但检查文件却难倒了我 我发现了有关如何检查文件夹是否为空的多个建议 并且我尝
  • 在 Google App Engine 中,如何避免创建具有相同属性的重复实体?

    我正在尝试添加一个事务 以避免创建具有相同属性的两个实体 在我的应用程序中 每次看到新的 Google 用户登录时 我都会创建一个新的播放器 当新的 Google 用户在几毫秒内进行多个 json 调用时 我当前的实现偶尔会创建重复的播放器
  • 如何使用 AWS Lambda Python 读取 AWS S3 存储的 Word 文档(.doc 和 .docx)文件内容?

    我的场景是 我尝试使用 python 实现从 Aws Lambda 读取 AWS 存储的 S3 word 文档 doc 和 docx 文件内容 下面的代码是我使用的 我的问题是我可以获取文件名 但无法读取内容 def lambda hand
  • Python:Goslate 翻译请求返回“503:服务不可用”[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我们不允许提出寻求书籍 工具 软件库等推荐的问题 您可以编辑问题 以便用事实和引文来回答 这个问题似乎不是关于主要由程序员使用的特定编程问
  • 制作一份 Python 文档的 PDF 文件

    Python 官方网站提供 PDF 文档下载 但它们是按章节分隔的 我下载了源代码并构建了 PDF 文档 这些文档也是单独的 PDF 我怎么能够从源代码中的 Makefile 构建一个 PDF 文件 我认为这样阅读起来会更方便 如果连接单独
  • Firebase Firestore:获取文档的生成 ID (Python)

    我可以创建一个新文档 带有自动生成的 ID 并存储对其的引用 如下所示 my data key value doc ref db collection u campaigns add my data 我可以像这样访问数据本身 print d
  • 根据 Pandas 中的列表选择数据框行的子集

    我有一个数据框df1并列出x In 22 import pandas as pd In 23 df1 pd DataFrame C range 5 B range 10 20 2 A list abcde In 24 df1 Out 24
  • pandas.read_csv 将列名移动一倍

    我正在使用位于的 ALL zip 文件here http www fec gov disclosurep PDownload do 我的目标是用它创建一个 pandas DataFrame 但是 如果我跑 data pd read csv
  • pytest找不到模块[重复]

    这个问题在这里已经有答案了 我正在关注pytest 良好实践 https docs pytest org en latest explanation goodpractices html test discovery或者至少我认为我是 但是

随机推荐

  • Laravel Carbon 日期 diffInDays() 出现字符串错误

    我需要找出两个日期之间的差异 假设我有 2017 02 01 2017 01 01 输出的就是两天之间的天数 formatted dt1 Carbon parse a gt date gt format Y m d formatted dt
  • PDOStatement::execute(): SQLSTATE[HY093]: 参数数量无效:绑定变量的数量与标记数量不匹配

    sql INSERT INTO table name day campaign name campaign id views CPM cost currency cost EUR VALUES day campaign name campa
  • CMake - 始终构建特定文件

    我有一个特定的文件 无论它是否被修改 都应该在每次编译时重建 原因是它取决于值变化的系统宏 我如何使用 CMake 强制重建 我不想将其绑定到特定目标 在 CMakeLists txt 中指定的任何目标开始实际构建过程之前 应该 触及 该文
  • EclipseLink 自定义表和列命名策略

    有没有办法让 EclipseLink 将驼峰式大小写转换为下划线 例如 class MyEntity gt select from MY ENTITY 理想情况下 我可以将预先打包的东西作为属性放入 persistence xml 中 您可
  • 将 pandas 系列和 dataframe 对象转换为 numpy 数组

    系列到 Numpy 数组 我有一个pandas系列对象如下所示 s1 pd Series 0 1 2 3 4 5 6 7 8 index AB AC AD BA BB BC CA CB CC 我想把这个系列转换成numpy数组如下 seri
  • 如何以编程方式启动特定应用程序?

    我想启动一个特定的应用程序 我知道如何执行意图 但如果有多个应用程序可以处理意图 我想避免选择菜单 我想直接进入特定的应用程序 希望这是有道理的 您应该使用包管理器的功能 Context ctx this or you can replac
  • 在 Flask 应用程序中返回 Excel 文件

    我正在创建一个 Flask 应用程序 提示用户输入 Excel 文件 对其进行一些处理 然后将文件返回给用户以便他们可以下载它 请忽略任何未使用的导入 我计划稍后使用它们 我的功能已关闭 我只是不确定如何将文件发送回用户以便他们可以下载它
  • JSP 表达式适用于 JSTL 标记,但不适用于 Struts 2 标记

    我在我的项目中使用 JSTL 和 Struts 2 我正在尝试使用 JSTL 和 Struts 2 标记在范围内设置一个值 如下所示 div div div div
  • 警告:mysql_fetch_object():提供的参数不是有效的 MySQL 结果资源

    地狱在那里 当我尝试连接以从数据库中提取内容时 出现以下错误 Warning mysql fetch object supplied argument is not a valid MySQL result resource in home
  • String 与 Stringbuffer 作为 HashMap 键

    我试图理解为什么 String 和 Stringbuilder StringBuffer 在用作 Hashmap 键时会受到不同的对待 让我用下面的插图来澄清我的困惑 示例 1 使用字符串 String s1 new String abc
  • 图库内的图像缩放/平移

    我正在尝试在 Android 图库小部件中缩放 平移图像 图像覆盖整个屏幕 虽然我可以缩放 平移图库中的图像 但我无法滑动到下一个 上一个图像 单个图像的缩放和平移效果很好 我创建了一个 TouchImageView 它扩展了 ImageV
  • 为什么 GWT 不允许我们在文档元素上添加关键事件处理程序?

    我知道有FocusPanel我可以在其上附加此类处理程序 但根据我的经验 该组件的行为不太好 所以我想尽可能避免它 所以我想知道为什么没有办法在文档上附加密钥处理程序 根据怪异模式它可以跨浏览器工作 所以这不应该是一个问题 我也尝试自己编写
  • 用于多对象分类的支持向量机

    我正在尝试使用线性支持向量机进行多类对象类别识别 到目前为止 我了解到主要使用两种方法 一对一 OVA 和一对一 OVO 但我很难理解它的实现 我的意思是我认为使用的步骤是 首先 特征描述符是通过 SIFT 准备的 所以我有一个 128XN
  • 子文档中的 SD MongoDB 多态性

    我刚刚开始使用 spring data mongodb 用 Ja va 开发一些应用程序 并遇到了一些我无法解决的问题 有几个像这样的文档 bean Document collection myBeanBar public class Ba
  • 显示站点根目录外部的图像

    类似的问题在这里被问到 从文档根目录外部提供图像 给出并接受的解决方案是使用 Apache Aliases 但是 文件夹的 Apache 别名是否也会将其公开 我想服务于一个形象并保持它在公众视野中的隐形性 除了别名之外 有谁知道在文档根目
  • Git 从浅克隆中查找自 以来修改的文件

    我在 CI 盒子上运行测试 为了加快速度 我只是做了一个浅克隆 git clone depth 1 email protected JoshCheek some repo git 假设所有测试都通过 我想触发管道中的下一步 触发的内容取决于
  • bigquery 流缓冲区会持续多长时间

    我目前正在将数据从sql server数据库系统迁移到bigquery 并且在尝试从具有活动流缓冲区的bigquery表中删除记录时遇到了问题 您能否确认流缓冲区在被删除之前会持续多长时间那么删除操作可以运行吗 我发现这给开发过程带来了不必
  • 在 C# 中解析阿拉伯日期?

    我在解析日期时遇到了问题 该程序被阿拉伯日期绊倒了 因为某些原因DateTime TryParse 为这种文化输出垃圾 这是说明我的问题的示例代码 var culture CultureInfo CreateSpecificCulture
  • Android 类似 TreeView 的功能

    我正在实施TreeView对于我的应用程序 我在网上搜索了一下 找到了一个ListView执行TreeView这太乱了 是否可以实现n级TreeView using ExpandableListView 请分享您的想法或给我参考一些例子 提
  • Robot Framework - 将 Appium 驱动程序传递给 python 脚本

    我正在使用 Python 将 Robot Framework 与 Appium 集成 但是我不知道如何将 Robot Framework 中创建的 Appium 驱动程序传递给自定义 python 脚本 我的环境 Mac 操作系统 小牛队