java-Robot Framework无法正确识别属性值更改

我正在与Java上的Selenium一起从事Robot Framework项目.

我正在测试的网站有一个语言下拉菜单来切换页面语言.每当选择一种新语言时,html标记中的“ lang”属性都会更改.例如,它来自< html lang =“ zh-CN”>如果从列表中选择了西班牙语.

这就是我用来测试语言切换的内容:

Select From List By Value       ${DROPDOWN}  ?hl=es
${language}                     Get Element Attribute  html@lang
Wait For Condition              ${language}==es  timeout=15s

即使我可以看到页面切换语言,也可以在测试运行时检查DOM,并且看到lang属性切换到新语言,但我仍然在15秒钟内不断获取Condition’en == es’的信息. .我尝试添加引号对字符串进行比较,但无济于事.我还尝试增加超时时间.

我无法理解为什么在实时(测试执行期间)看到语言确实已更改时条件始终返回false:

java-Robot Framework无法正确识别属性值更改

解决方法:

检查不会成功,因为您一次获得了属性的值,然后等待该一次性值更改.而且当您获得它的那一刻,DOM仍然没有更新.

另外,关键字Wait For Condition旨在执行用户的javascript次数,并在其值为True时停止.您的条件不是js :),还有语法错误(您必须将变量和值放在引号中,因为当前它们是对未定义变量的引用).

您至少有3个选项:

>使用关键字Wait Until Page Contains Element并将具有所需属性值的html的定位符传递给它-类似于/ html [@ lang = es“];这将为您处理DOM状态轮询.
>实现自定义池-在迭代绑定循环中,获取属性,检查其是否具有所需的值,如果是,则中断循环;如果不是,请休眠100-200ms,然后检查下一次迭代.如果循环未达到上限,则该值为预期值-失败.
>通过编写javascript方法或表达式中的值(并在其中找到元素及其属性值)来使用“等待条件” kw.

如果要这样做,则我的偏好将是上述顺序-考虑到易于实现和大多数RF本地方法.

上一篇:python-命令行变量未覆盖Robot Framework中的套件级别变量


下一篇:java – Mac OSX – IllegalStateException:驱动程序不可执行: