我正在尝试使用Robot Framework自动化Angular2应用程序。但是,它在我的测试用例中找不到任何关键字。
它会抛出一个错误:
does't match elements(id=accountinfo)
答案 0 :(得分:0)
过去几个月我一直在使用Robot Framework自动化Angular应用程序。这里有一些可以帮助你的工具。
首先,Selenium2Library实际上已经过时了。有一个新版本ExtendedSelenium2Library,它包含新的关键字并支持Angular应用程序。要切换,请将代码中文本“Selenium2Library”的所有实例更改为“ExtendedSelenium2Library”。您可能还需要单独下载它,但它已经有一段时间了,所以我不记得了。
其次,您需要学习如何在至少某种程度上读取和写入xpath。我不会在这里完全解释它,但是这里有一个工具可以为你做大量的工作。它不会一直有效,但它大部分时间都适用于包含文本的元素。
Click Element by Text
# EXAMPLE USAGE
# Click Element by Text "text on the element" id="midlevellocationoftext" button
# NOTE: Does not account for extra spaces at the beginning or end, text must be exact
# NOTE: Allows for injections on purpose to allow user to be more exact with their location
[Arguments] ${text} ${location}=* ${elementtype}=*
Click Element xpath=//*[@${location}]//${elementtype}[text()=${text}]
如果你没有它的中间位置,但确实有按钮类型,请输入*。这是“我不知道。”的xpath语法。
SELF-EDIT:几乎忘了,但在HTML中,id不使用与Robot Framework相同的语法。 id = someId不一定等于id =“someId”。尝试在ID的文本周围加上引号。
附加信息:在我最近的Angular体验中,ID和doms都可以变化。同一个定位器可能在一个测试中起作用,但是如果你在它之前运行一个不同的测试它将无法工作。
答案 1 :(得分:-1)
首先尝试在开发人员控制台中使用你的xpath(或其他选择器)(例如Chrome开发者控制台 - 在页面上点击F12,在"元素"点击CTRL + F并复制你的xpath(选择器)到搜索线)。如果在这里找不到元素,则选择错误...否则尝试在机器人代码中使用一些等待(例如,等到元素可见)