Как получить HTML-код WebElement в Selenium

Я новичок в тестировании, поэтому извиняюсь заранее, если мой вопрос звучит немного первично.

Я использую Selenium и Java для написания теста.

Я знаю, что webElement.getAttribute("innerHTML"); возвращает мне innerHTML, например, для элемента ниже:

<a href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button" style="position: absolute; border-radius: 0px 0px 4px 4px;">
    <span class="ui-icon ui-icon-closethick">close</span>
</a>

он возвращает:

<span class="ui-icon ui-icon-closethick">close</span>

но мне нужно что-то, что приносит мне внутренний атрибут WebElement "a", что-то вроде ниже:

href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button" style="position: absolute; border-radius: 0px 0px 4px 4px;"

Ответ 1

Если вы хотите HTML-код самого элемента, вы можете использовать

webElement.getAttribute("outerHTML");

Он вернет HTML самого элемента и всех дочерних элементов. Я не уверен, что это именно то, что вы хотите. Я не думаю, что есть способ получить HTML только выбранного элемента.

Ответ 2

Вы можете прочитать атрибут innerHTML, чтобы получить источник содержимого элемента или outerHTML для источника с текущим элементом.

Пример: - Теперь предположим, что ваш Элемент, как показано ниже

<tr id="myRow"><td>A</td><td>B</td></tr>

Внутренний вывод элемента

<td>A</td><td>B</td>

Выход внешнего элемента

<tr id="myRow"><td>A</td><td>B</td></tr>

Живой пример: -

http://www.java2s.com/Tutorials/JavascriptDemo/f/find_out_the_difference_between_innerhtml_and_outerhtml_in_javascript_example.htm

Ниже вы найдете синтаксис, который требует различных привязок. Измените innerHTML на outerHTML в соответствии с требованиями.

Python:

element.get_attribute('innerHTML')

Джава:

elem.getAttribute("innerHTML");

С#:

element.GetAttribute("innerHTML");

Рубин:

element.attribute("innerHTML")

JS:

element.getAttribute('innerHTML');

Если вы хотите HTML-код всей страницы, используйте следующий код: -

driver.getPageSource();

Ответ 3

webElement.getAttribute("href");
webElement.getAttribute("class");
.
.
.

или получить их все:

Object[] attr = ((JavascriptExecutor)seleniumdriver).executeScript("return arguments[0].attributes);", webElement);

Ответ 4

Попробуйте .getAttribute("innerHTML"); функцию для извлечения источника в строковой форме

Пример кода:

String source = driver.findElement(By.xpath("/html/body/script[6]")).getAttribute("innerHTML");

Ответ 5

Если у нас есть это:

<a href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button"
style="position: absolute; border-radius: 0px 0px 4px 4px;">
<span class="ui-icon ui-icon-closethick">close</span></a>

и нам нужно получить все атрибуты "a", которые будут такими:

href="#" class="ui-dialog-titlebar-close ui-corner-all" role="button"
    style="position: absolute; border-radius: 0px 0px 4px 4px;"

Мы можем использовать этот код:

webElement.getAttribute("outerHTML").split(">")[0]

где webElement является "a".

Или точнее:

String s = we.getAttribute("outerHTML");

s = s.substring(2, s.indexOf(">"));

Ответ 6

Я обычно получаю источник элемента в моих тестовых примерах для утверждения. Посмотрите следующий код, в котором я тестирую, является ли это раскрывающимся списком или нет.

В следующем коде сначала я получил внешний исходный код элемента и проверил, есть ли в нем ключевое слово "Multiple".

   @FindBy(xpath="//div[@class='col-lg-10']//div[1]//div[1]//div[2]//select[1]")
   WebElement element;
   Boolean status = element.getAttribute("outerHTML").contains("Multiple");
   Assert.assertTrue(!status, "User can select only one value at a time in drop down field.");

В моем случае он утверждал, что во внешнем HTML тега select нет ключевого слова "Multiple", а выпадающий список представляет собой раскрывающийся список с одним выбором.