Как получить 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", а выпадающий список представляет собой раскрывающийся список с одним выбором.