[英]How to locate the WebElement in following HTML code in Selenium using Java?
[英]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>
實況示例: -
您將在下面找到根據不同綁定所需的語法。 根據需要將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.