我有以下适用于 Firefox 的行
assertTrue(!selenium.isElementPresent("//input[@name=\""+chosen.getField().getName()+"\" and contains(@style, \"color: rgb(255, 0, 0);\")]"));
但在 IE 中失败。
当我检查 IE 中的字段时,我看到以十六进制表示的颜色样式。您如何表示上面的行在 IE 上工作?
最佳答案
样式属性和 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
结构,在其中对输入进行断言,如果失败,则捕获它并使用大写对同一输入进行断言(这种方式适用于 IE 和其他浏览器...
如果在 IE 中颜色不以这种方式解释,您可以在 catch
语句内用大写字母在定位器中添加 IE 方式。
无论如何,如果开发人员通过向所需输入添加一个类,然后使用常规 css 实现样式来替换该静态样式,那么这个可怕的问题就会为您解决。
关于java - 在 IE 中使用 Style 检查元素是否存在的语法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1395363/