对于Sprint故事,我需要声明某个字体在不同页面上不再可用。现在,我可以验证某个元素是否包含字体并且确实被另一个元素替换,但有没有办法检查整个页面是否存在某种字体?
我在IntelliJ中使用Selenium Webdriver cucumber / Java。
答案 0 :(得分:1)
这取决于字体是通过FONT
标签还是CSS指定的。 FONT
标签现在已经过时,不鼓励使用,但您可以使用下面的代码找到它们并将整个标签写入控制台。
// find FONT tags
List<WebElement> foundFontTags = driver.findElements(By.cssSelector("font[face*='fontname']"));
for (WebElement foundFontTag : foundFontTags)
{
System.out.println(foundFontTag.getAttribute("outerHTML"));
}
要在CSS中找到它会有点棘手。您最好的选择是与开发人员或您的设计团队交谈并询问如何指定字体(如果您还不知道)。问题是,如果没有这些知识,你将会在整个地方寻找字体。它可以在一个单独的STYLE
文件中内联指定.css
块,依此类推,每个块都需要自己的搜索。我提供了一个用于搜索内联CSS样式的字体的示例。
// find font-face in inline CSS
foundFontTags = driver.findElements(By.cssSelector("[style*='font-family:fontname']"));
for (WebElement foundFontTag : foundFontTags)
{
System.out.println(foundFontTag.getAttribute("outerHTML"));
}
如果未在外部.css文件中指定字体,您可以通过文本搜索整个HTML源代码来获取&#34; font-face:fontname&#34;。
另一个警告......只是因为你发现包含错误字体的css类的定义并不意味着它实际上应用于可见元素。这是另一个问题。你可能应该从Sprint团队那里得到一个很好的定义。
答案 1 :(得分:1)
您可以像这样使用Selenium:
WebElement.getCssValue("text-align")
但对于您必须验证的所有CSS来说,这将有点棘手。这是一个good article。也许像Quixote libs / frameworks这样的CSS单元测试会更合适。其他可能的方式(我已成功使用) - 使用 huxley进行视觉回归,它可以支持您的整个布局演示和验证。