【问题标题】:GetAttribute in Selenium VBA for styleSelenium VBA中的GetAttribute用于样式
【发布时间】:2020-10-02 00:03:20
【问题描述】:

我正在 VBA 中处理 selenium,并且我已经存储了一个变量“post”来存储所有出现的特定元素

Dim post As Object

Set post = .FindElementsByCss("#DetailSection1")
Dim i As Long
For i = 1 To post.Count
    Debug.Print post.Item(i).getAttribute("style")
Next i

我需要从元素中提取样式值

<div id="DetailSection1" style="z-index:3;clip:rect(0px,746px,32px,0px);top:228px;left:0px;width:746px;height:32px;">
</div>

我还需要在即时窗口中打印 innerHTML,当我使用 getAttribute("innerHTML") 时,它对我不起作用 任何想法

【问题讨论】:

  • 你不应该使用通过 Id 获取元素而不是通过 CSS 获取它吗?
  • 我的 id 不是唯一的。我有 22 个这个 id
  • 我不记得但 Selenium 的基本方法不是 Attribute("") 而不是 getAttribute? getAttribute 用于 nodeList 而不是 webElement 中的节点。 IIRC,但确认会很好。
  • 非常感谢您的精彩提示。这对我有用Debug.Print .FindElementByCss("#DetailSection1").Attribute("outerHTML")

标签: excel vba selenium selenium-webdriver getcomputedstyle


【解决方案1】:

getAttribute("style") 应该可以工作,但你必须诱导一个服务员让元素在HTML DOM 中出现/可见。

Debug.Print post.Item(i).getAttribute("style")

准确地说,要从元素中提取样式属性的值,您可以使用getCssValue() 方法,如下所示:

Debug.Print post.Item(i).getCssValue("z-index")
Debug.Print post.Item(i).getCssValue("top")
Debug.Print post.Item(i).getCssValue("left")
Debug.Print post.Item(i).getCssValue("width")
Debug.Print post.Item(i).getCssValue("height")

getAttribute("innerHTML")

get_attribute("innerHTML") 可用于读取任何节点内的innerHTML 或文本 / WebElement

您可以在Difference between text and innerHTML using Selenium找到详细讨论


参考

您可以在以下位置找到一些相关讨论:

【讨论】:

  • 非常感谢。这会引发错误。还有innerHTML 呢?
  • @YasserKhalil 查看答案更新,如果有任何问题,请告诉我。
  • 我使用了get_attribute("innerHTML")getAttribute("innerHTML"),两者都抛出错误。不知道怎么回事?
  • @YasserKhalil 嗯,我没有 VBA 环境设置,但我知道我链接的 VBA 代码库供您参考。很高兴你成功了。
  • @YasserKhalil 您可能正在寻找getAttribute("outerHTML")
猜你喜欢
  • 1970-01-01
  • 2021-01-14
  • 2020-03-03
  • 1970-01-01
  • 2020-09-10
  • 2015-11-29
  • 2011-07-07
  • 2023-01-13
  • 1970-01-01
相关资源
最近更新 更多