如何通过 selenium Java API 读取 DOM 对象的属性?
How to read properties of DOM object via selenium Java API?
我需要通过 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");
上面提到的两行代码returns null.
以下代码也没有 return 所需的 属性 值:
element.getCssValue("ariaChecked");
element.getCssValue("__data__.label");
有谁知道如何通过 selenium Java API?
提前致谢!
我找到了一种解决方法,可以通过 Java 脚本读取 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.
我需要通过 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");
上面提到的两行代码returns null.
以下代码也没有 return 所需的 属性 值:
element.getCssValue("ariaChecked");
element.getCssValue("__data__.label");
有谁知道如何通过 selenium Java API?
提前致谢!
我找到了一种解决方法,可以通过 Java 脚本读取 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.