【问题标题】:UFT / QTP : unable to access Object.CurrentStyle in FirefoxUFT / QTP:无法在 Firefox 中访问 Object.CurrentStyle
【发布时间】:2017-04-12 20:42:48
【问题描述】:

我正在使用下面的代码来获取 IE 上“链接”的字体大小。

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

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

需要对象“Object.CurrentStyle”。

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

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

但我没有获取 firefox 的结果

【问题讨论】:

  • 一旦您深入了解 Object,您将脱离 UFT 功能并与底层对象进行交互 - 可用功能取决于开发人员。对于浏览器独立性,我会从 DOM 中选择节点并提取属性。
  • 能否用代码解释一下?

标签: vbscript qtp hp-uft


【解决方案1】:

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

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

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

attributeValue 现在是一个包含样式属性数据的字符串,可以拆分、正则表达式或任何您需要的内容

【讨论】:

  • 我在 Firefox 上遇到了 Object.CurrentStyle 问题。它与识别对象无关。但是我尝试了您解释但面临同样问题的方法。 set FXObj= Browser("application version:=Mozilla Firefox 34\.0\.5","title:=Test_2").Page("title:=Test_2").Link("xpath:=//html/body/div[2]/div/a") 如果我使用 fxmsg=FXObj.Object.Object.CurrentStyle.TextDecoration 我会收到错误,因为 Object required: 'Object.CurrentStyle' 如果我使用 fxmsg=FXObj.Object.Object.Style.TextDecoration 则不会返回任何内容
  • 没有currentStyle on FireFox这样的东西,它只有IE。 really 的那个链接太老了,只有毫秒
  • 你是对的,FireFox 上没有 currentStyle,但它是 Style,但是当我在 fireFox 上使用 style 时,我得到了 null 值。
【解决方案2】:
`TestObject.Object.currentStyle.fontSize` 

只能在 IE 上工作,而不能在 FireFox 上工作,我们可以选择使用“样式”代替 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

【讨论】:

    【解决方案3】:

    FireFox DOM 并不支持所有与 IE 相同的方法。我通过获取浏览器的“应用程序版本”属性并使用函数根据浏览器类型确定我要查找的值,解决了类似的跨平台测试问题。

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

    您可以找到 FireFox 页面/文档 DOM here

    【讨论】:

      猜你喜欢
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多