簡體   English   中英

如何在Selenium中獲取WebElement的HTML代碼

[英]How to get HTML code of a WebElement in 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;"

如果你想要元素本身的HTML,你可以使用

webElement.getAttribute("outerHTML");

它將返回元素本身的HTML以及所有子元素。 我不確定這是不是你想要的。 我認為沒有辦法只獲取所選元素的HTML。

您可以讀取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

蟒蛇:

element.get_attribute('innerHTML')

Java的:

elem.getAttribute("innerHTML");

C#:

element.GetAttribute("innerHTML");

紅寶石:

element.attribute("innerHTML")

JS:

element.getAttribute('innerHTML');

如果您希望整頁HTML使用以下代碼: -

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

或者讓他們全部:

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

試試.getAttribute("innerHTML"); 函數以字符串形式提取源

示例代碼:

String source = driver.findElement(By.xpath("/html/body/script[6]")).getAttribute("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>

我們需要獲得“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(">"));

我通常在我的測試用例中得到一個元素來源斷言。 請參閱以下代碼,我在其中測試它是否是單選項下拉列表。

在下面的代碼中,首先我獲得了元素的外部源代碼,並檢查它是否包含“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.");

在我的例子中,它斷言select標簽的外部HTML中沒有“Multiple”關鍵字,下拉列表是單選下拉列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM