web-dev-qa-db-ja.com

SeleniumでWebElementのHTMLコードを取得する方法

私はテストに慣れていないので、質問が少し主に聞こえる場合は事前に謝罪します。

私は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;"
23
LoveLovelyJava

要素自体のHTMLが必要な場合は、使用できます

webElement.getAttribute("outerHTML");

要素自体のHTMLとすべての子要素を返します。それがまさにあなたが望むものかどうかはわかりません。選択した要素のHTMLだけを取得する方法はないと思います。

28
JeffC

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

以下に、異なるバインディングごとに必要な構文を示します。必要に応じて、innerHTMLouterHTMLに変更します。

Python:

element.get_attribute('innerHTML')

Java:

elem.getAttribute("innerHTML");

C#:

element.GetAttribute("innerHTML");

ルビー:

element.attribute("innerHTML")

JS:

element.getAttribute('innerHTML');

ページ全体のHTMLを使用する場合は、以下のコードを使用します。

driver.getPageSource();
7
Shubham Jain
webElement.getAttribute("href");
webElement.getAttribute("class");
.
.
.

またはそれらすべてを取得するには:

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

これがある場合:

<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(">"));
2
LoveLovelyJava

.getAttribute("innerHTML"); functionを試して、ソースを文字列形式で抽出します

サンプルコード:

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

通常、テストケース内の要素のソースを取得してアサートします。単一オプションのドロップダウンかどうかをテストしている次のコードを参照してください。

次のコードでは、最初に要素の外部ソースコードを取得し、「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に「複数」のキーワードはなく、ドロップダウンは単一選択のドロップダウンであると断言しました。

0
Usman Kokab