【问题标题】:Keyword 'Capture Page Screenshot' could not be run on failure失败时无法运行关键字“捕获页面截图”
【发布时间】:2015-12-21 17:28:11
【问题描述】:

我正在使用机器人框架运行自动化 android 应用程序: 我已经导入了 selenium2library 和 android 库。 最初我使用 goto url 关键字启动应用程序: 我将参数作为我的应用程序的 url 给出。 运行测试脚本后我得到::

Keyword 'Capture Page Screenshot' could not be run on failure: 
Multiple keywords with name 'Capture Page Screenshot' found. Give 
the full name of the keyword you want to use:     
AppiumLibrary.Capture Page Screenshot     
Selenium2Library.Capture Page Screenshot.

如何解决。谁能告诉我一些解决方案。

【问题讨论】:

  • 您能否更清楚地说明这个问题?如果我是唯一的人,我很抱歉,但我不明白这里的问题。您能否提供有关您的问题的分步说明?谢谢。

标签: appium robotframework


【解决方案1】:

Robot 告诉您有两个名为 Capture Page Screenshot 的关键字。一种由Selenium2Library 定义,一种由AppiumLibrary 定义。其中之一或两者还指示机器人在出现错误时运行Capture Page Screenshot。但是,因为有两个,机器人不知道它应该调用哪一个。

至少有几个解决方案。第一种是使用内置关键字Set library search order,指示机器人搜索关键字的顺序。二是具体告诉机器人运行哪个版本。解决方案也可能像将两个库导入单个套件一样简单。

设置搜索顺序

要设置搜索顺序,请在测试开始时添加类似这样的内容——也许在套件设置中:

*** Settings ***
| Suite Setup | Set Library Search Order | AppiumLibrary | Selenium2Library

这指示机器人首先检查AppiumLibrary,然后检查Selenium2Library 以解决冲突。

来自关键字文档:

库搜索顺序用于解决关键字时的冲突 测试数据中的名称匹配多个关键字。第一个图书馆(或 资源,见下文)包含关键字被选中,并且 使用的关键字实现。如果在任何地方都找不到关键字 库(或资源),测试执行失败的方式与 未设置搜索顺序。

设置明确的关键字名称

导入Selenium2LibraryAppiumLibrary 时,您可以指定在失败时运行哪个命令。默认值为Capture page screenshot,这是问题的根源,因为该名称有两个关键字。您可以明确告诉机器人使用哪一个。

例如:

*** Settings ***
| Library | Selenium2Library | run_on_failure=AppiumLibrary.CapturePageScreenshot
| Library | AppiumLibrary | run_on_failure=AppiumLibrary.CapturePageScreenshot

如果您不希望更改导入库的方式,每个库还提供一个名为 Register keyword to run on failure 的关键字,您可以在设置步骤中使用它来注册完全限定的关键字名称。

【讨论】:

  • 如果我有 3 个测试用例并且我希望 X、Y 与库 A 和 Z 与库 B 一起运行,那该怎么办?无论如何在设置中表明这一点?谢谢。
猜你喜欢
  • 2018-03-05
  • 2019-09-28
  • 2023-01-27
  • 2021-07-06
  • 2020-10-20
  • 1970-01-01
  • 1970-01-01
  • 2021-07-09
  • 1970-01-01
相关资源
最近更新 更多