【问题标题】:How do I press keyboard with robot framework?如何使用机器人框架按键盘?
【发布时间】:2021-07-19 10:51:01
【问题描述】:

我正在尝试使用基于 Python 的 Robot Framework 来实施自动化项目。就我而言,我需要按 Command+A 来全选,我使用过ASCII Tableselenium.webdriver.common.keys (docs),但它仍然没有没用,详情如下:


环境

操作系统: Mac 10.15.7
代码编辑器: Visual Studio Code


代码

***setting***
Library   OperatingSystem
Library   DateTime
Library   OperatingSystem
Library   RequestsLibrary
Library   BuiltIn
Library   Collections
Library   json
Library   Selenium2Library
Resource  ./resource1.robot

*** Variables ***
${collection_name}    //input[@name='name']

***Test case***
press keys   ${collection_name}  \\1

实际结果

在定位器中键入“\1”

actual result


预期结果

在定位器中全选

expected result


这个问题有什么解决办法吗?
提前致谢!

【问题讨论】:

标签: python-3.x selenium visual-studio-code robotframework


【解决方案1】:

您的脚本中有几处错误,因此请先从这些问题开始。

测试用例不是关键字

您的测试必须是结构化的,以便测试用例中至少有一个关键字 - 目前您的测试用例有一个名称 press keys //input[@name='name'] \\1.

正确的测试用例结构,请参考Robot Framework User Guide - 添加测试用例,并在测试用例中使用关键字即可。

*** Test Cases ***
Pressing Keys
    Press Keys    ${collection_name}    \\1

Selenium2Library 没有关键字Press Keys

建议改为使用SeleniumLibrary 而不是Selenium2Library。当然,除非选择是出于某种原因,在这种情况下,阅读关键字文档会对您有很大帮助。

考虑比较Selenium2LibrarySeleniumLibrary 的可用关键字。请注意,SeleniumLibrary 似乎不再支持 ASCII 键码。使用SeleniumLibrary 应该可以正常工作。

*** Test Cases ***
Pressing Keys
    Press Keys    ${collection_name}    CTRL+A

Selenium2Library 中看起来像下面

*** Test Cases ***
Pressing Keys
    Press Key    ${collection_name}    \\1

意见:回复问题下的cmets

从 cmets 中,我了解到最终目标是简单地清除编辑字段中的文本。没有必要使用键盘跟随确切的用户输入,除非出于特定原因(例如某些事件触发),否则不建议这样做。从长远来看,减少所需的输入量会使脚本更易于阅读和维护。

考虑使用SeleniumLibrarySelenium2Library 中的关键字Clear Element TextSeleniumLibrary 中的Input Text 来清除该字段或清除该字段,然后输入您自己的文本。要额外捕获现有文本,请使用任一库中的 Get Text 关键字。

作为一个示例,下面的测试用例将获取文本,清除文本,然后检查元素是否为空。它应该适用于这两个库。

*** Test Cases ***
Pressing Keys
    ${text}=    Get Element Text    ${collection_name}
    Clear Element Text    ${collection_name}
    Element Text Should Be    ${collection_name}    ${EMPTY}

【讨论】:

  • 澄清一下,SeleniumLibrary 不支持 ASCII 码。旧的 Selenium2Library 关键字 Press Key 确实如此,但除非您已经拥有使用旧库制作的大型测试套件,否则不建议使用它。
  • 谢谢!但是我尝试了您提供的方法,它仍然无法正常工作。按键 ${collection_name} CTRL+A
  • 您运行的是哪个版本的 Robot 和 Python?我刚刚注意到您实际上是在导入旧的 Selenium2Library - 尝试使用 SeleniumLibrary 可能是个好主意。
  • 还调整了我对您的 cmets 问题的回答。
  • 1.我将库调整为 SeleniumLibrary ,但仍然无法正常工作。 2.python版本是3.9.4 3.机器人robotframework在/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (4.0.1)
猜你喜欢
  • 2018-06-04
  • 2017-01-26
  • 1970-01-01
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
  • 2017-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多