我有以下适用于Firefox的行
assertTrue(!selenium.isElementPresent("//input[@name=\""+chosen.getField().getName()+"\" and contains(@style, \"color: rgb(255, 0, 0);\")]"));
但在IE中失败。
当我在IE中检查字段时,我看到以十六进制表示的颜色样式。您如何代表上述行来处理IE?
答案 0 :(得分:1)
样式属性和IE的主要问题是无论html源是什么,它都以大写形式解释它们。 我们已将此记录在: http://seleniumhq.org/docs/05_selenium_rc.html#ie-and-style-attributes
因此,对于该定位器,您应该首先使用:
assertTrue(!selenium.isElementPresent("//input[@name=\""+chosen.getField().getName()+"\" and contains(@style, \"COLOR: rgb(255, 0, 0);\")]"));
如果颜色不匹配,您可以创建一个try - catch
结构,在该结构中断言输入,如果失败,则捕获它并使用UPPERCASE断言相同的输入(这种方式将起作用IE和其他浏览器......
如果在IE中颜色没有这样解释,你可以在定位器中添加IE方式,并在catch
句子中添加大写字母。
无论如何,如果开发人员通过向所需输入添加一个类来替换静态样式,然后使用常规css实现样式,那么这个可怕的问题将为您修复。