【问题标题】:How to read properties of DOM object via selenium Java API?如何通过 selenium Java API 读取 DOM 对象的属性?
【发布时间】:2020-07-29 20:22:22
【问题描述】:

我需要通过 selenium Java API 读取 DOM 对象的一些属性。我将通过一个例子来解释我的要求。

假设首先我想找到在 Chrome 开发者工具中突出显示的 <g> 元素(如下所示)。我可以通过 Selenium Java API 使用以下代码轻松完成此操作。

WebElement gElement = driver.findElement(By.xpath("//*[@data-id='node_grp_0_id52UVV33EHE7']"));

然后我想通过 Selenium Java API 读取这个 <g> 对象的几个属性。因此,我在 Chrome 开发者工具中点击了这个<g> 元素并打开了Chrome 开发者工具右侧的Properties 视图(如下所示),以便找到各种属性的路径。找到路径后,我现在想通过 Selenium Java API 读取其中几个属性(例如 ariaChecked__data__.label),如下所示:

gElement.getAttribute("ariaChecked");
gElement.getAttribute("__data__.label");

上述两行代码都返回null。

以下代码也没有返回所需的属性值:

element.getCssValue("ariaChecked");
element.getCssValue("__data__.label");

有谁知道如何通过 selenium Java API 读取 DOM 对象的各种属性(列在 Chrome 开发者工具的 Properties 视图中,如下所示)?

提前致谢!

【问题讨论】:

    标签: java selenium selenium-webdriver google-chrome-devtools


    【解决方案1】:

    我找到了一种解决方法,可以通过 Java Script 读取 Web 元素的属性,如下所示。此解决方法也支持嵌套属性:

    public String getProperty(final String name) {
        return getJavascriptExecutor().executeScript("return arguments[0]." + name + ";", webElement).toString();
    }
    

    上面的方法可以调用如下:

    String name = getProperty("name");
    

    String label = getProperty("__data__.label"); // This is a nested property.
    

    【讨论】:

      猜你喜欢
      • 2015-12-23
      • 2011-12-06
      • 2013-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 2019-07-23
      • 1970-01-01
      相关资源
      最近更新 更多