UFT/QTP:无法在 Firefox 中访问 Object.CurrentStyle

UFT / QTP : unable to access Object.CurrentStyle in Firefox

我正在使用以下代码在 IE.

上获取 "link" 的字体大小
Browser("BB").Page("PP").Link("link").Object.CurrentStyle.fontSize

但是,如果我在 FireFox 上使用相同的代码,QTP/UFT 会抛出错误:

object required "Object.CurrentStyle".

经过大量研究和探索,我发现对于 FireFox 它不是 Object.CurrentStyle,而是 Object.Style,这是 QTP 中的一个内置函数,并在下面的代码中使用

Browser("BB").Page("PP").Link("link").Object.style.fontSize

但我没有获取 firefox 的结果

我在浏览器之间切换时遇到了类似的问题。 IE 有一个其他浏览器不支持的特殊样式对象。我建议一个更通用的策略,对待它的样式 - html 属性。您可以使用纯 DOM,但让我们使用 UFT 测试对象:

第 1 步:找到要从中提取样式的 html 节点:
Set element = Browser("creationtime:=0").Page("title:=HelloWorld").WebElement("xpath:=//html/body/div[@id='something']")

第 2 步:提取样式数据
attributeValue = element.Object.GetAttribute("style")

attributeValue 现在是一个包含样式属性数据的字符串,它可以被拆分、RegExp'd 或任何你需要的

`TestObject.Object.currentStyle.fontSize` 

仅适用于 IE,不适用于 FireFox,我们可能会选择使用 "Style" 代替 FireFox 的 "currentStyle",但事实并非如此无法正常工作。此外,FontSize 在 IE 中被读取为 "FontSize",在 Firefox

中被读取为 "font-size"

Firefox

上的应用程序检索所需信息
set FXObj= Browser("title:=Test_2").Page("title:=Test_2").Link("text:=link")

Set webElem = FXObj.Object
Set compStyle=Browser("title:=Test_2").Page("title:=Test_2").Object.defaultView.getComputedStyle(webElem, "")

fntsize = CompStyle.getPropertyValue("font-size")
Print fntsize

FireFox DOM 不支持与 IE 相同的所有方法。我通过获取浏览器的 "application version" 属性 并使用函数根据浏览器类型确定我正在寻找的值,解决了类似的跨平台测试问题。

它并不迷人,但它为我的团队节省了很多人头。

您可以找到 FireFox page/document DOM here.