【发布时间】:2018-07-05 01:52:12
【问题描述】:
我正在使用 Robot Framework 和 Selenium 来测试具有语言选择器的网站。我需要能够选择一种语言,然后验证页面是否已实际更改为该语言。
由于选择新语言后,<html> 标记的 lang 属性中的值发生了变化,我决定使用它来验证语言是否已成功更改。但是我得到了不稳定的结果,因为我的测试有时会通过,有时不会。
这是我使用的关键字的定义:
CHANGE LANGUAGE
[Arguments] ${lang}
Select From List By Value ${LANGUAGE SWITCH} ?hl=${lang}
Wait Until Page Contains Element css=html
${doc lang} Get Element Attribute css=html@lang
Should Be True '${doc lang}'=='${lang}' timeout=15s
由于我必须多次执行此关键字(每种可用语言一个),我经常收到可怕的“陈旧元素”错误:| FAIL | stale element reference: element is not attached to the page document。
我在这里阅读了this article 和其他一些问题,并了解如果在获取元素引用后更新它可能会发生这种情况。但是,我不确定应该如何修改关键字以避免出现此错误。
【问题讨论】:
-
在找到元素并对其调用任何操作之前,您需要确保页面已加载。
-
您是否在您发布的代码块或其他地方遇到异常?如果它在其他地方,您还应该发布该代码。我的猜测是还有另一种写法,这样你就可以避免异常。永远不要重用在语言切换之前获取的变量。我猜这就是问题所在而没有看到你所有的代码。
-
哪个语句因陈旧元素异常而失败?我看不出您发布的任何人会如何做到这一点。
-
我不确定如何检查哪个语句是引发异常的语句...这是一个关键字实现,而不是测试用例,所以我只收到一条消息,说明使用的测试此关键字失败。