Как прочитать свойства объекта DOM через API selenium Java? - PullRequest
0 голосов
/ 16 апреля 2020

Мне нужно прочитать некоторые свойства объекта DOM через API селен Java. Я объясню свое требование на примере.

Скажем, сначала я хотел бы найти элемент <g>, выделенный в Chrome Developer Tools (как показано ниже). Я легко могу сделать это через Selenium Java API со следующим кодом.

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

Затем я хотел бы прочитать несколько свойств этого <g> объекта через Selenium Java API. Итак, я нажимаю на этот элемент <g> в Chrome Developer Tools и открываю представление Properties справа от Chrome Developer Tools (как показано ниже), чтобы найти путь к различным свойствам. , После нахождения путей я хотел бы прочитать некоторые из этих свойств (например, ariaChecked и __data__.label) через API Selenium Java, как показано ниже:

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

Обе вышеупомянутые строки of code возвращает null.

Следующий код также не возвращает требуемые значения свойств:

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

Кто-нибудь знает, как читать различные свойства объекта DOM (перечисленные в представлении Properties) из Chrome Инструментов разработчика, как показано ниже) через API selenium Java?

Заранее спасибо!

enter image description here

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Я нашел обходной путь для чтения свойства веб-элемента через Java Script, как показано ниже. Этот обходной путь также поддерживает вложенные свойства:

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.
0 голосов
/ 17 апреля 2020

Вы можете использовать .getProperty()
Я тоже мало что знаю Java, но я надеюсь, что это исправит вашу проблему.

gElement.getProperty("ariaChecked");
...