2

編集:

public bool getImage()
{
    IWebElement table = driver.FindElement(By.Id("DIV_ID_1"));

    string name = String.Format("//*[contains(text(), \'{0}\')]", 'TEST1');
    IWebElement element = table.FindElement(By.XPath(name));
    IWebElement parent = element.FindElement(By.XPath(".."));

    try
    {
        IWebElement image = element.FindElement(By.XPath("//img"));
    }
    catch (NoSuchElementException e)
    {
        return false;
    }

    return true;
}

TEST1持っているかどうかはどうすればわかりますImageか?以下のhtmlソースコードでは、私はtrを持っており、tr内にはtdがあり、一部のtrには画像タグがあり、一部にはない場合があります

したがって、例として名前を渡します。TEST1戻り値では、名前にImageタグが含まれているかどうかを確認します。

繰り返しになりますが、合格TEST2TEST3た場合return null、画像タグがないため、また、そうである場合はTEST1、trueを返す必要TEST4があります。Image tag

私はこのようなことを試みましたが、うまくいきませんでした:

string name = String.Format(".//td[contains(., \'{0}\')]/..//@src", "TEST1");
IWebElement element = driver.FindElement(By.XPath(name));

このエラーが発生します:上記のコードを試した後...

xpath式'.//td [contains(。、' TEST1')] /..//@src'を評価できないか、WebElementになりません

以下はhtmlのソースコードです

<div id="DIV_ID_1">
    <table id="TBLID1">
        <tr>
            <td>
                TEST1
            </td>
            <td>
                <img id="ctl00" src="../App_Themes/Default/images/phone.gif" />
            </td>
        </tr>
        <tr>
            <td>
                TEST2
            </td>
        </tr>
        <tr>
            <td>
                TEST3
            </td>
        </tr>
        <tr>
            <td>
                TEST4
            </td>
            <td>
                <img id="ctl02" src="../App_Themes/Default/images/phone.gif" />
            </td>
        </tr>
    </table>
</div>
4

2 に答える 2

5

そこで、これをいくつかのステップに分割します。

最初に要素を取得します。

WebElement element = driver.findElement(By.xpath("//*[contains(text(), 'TEST1')]"));

次に、親要素を取得します。

WebElement parent = element.findElement(By.xpath(".."));

<img>次に、タグの親要素を確認します。

Try
{
    WebElement image = parent.findElement(By.xpath("//img"));
}
catch (NoSuchElementException e)
{
    System.out.println("Did not find an image");
}

これを関数でラップし、テキストを渡して画像を見つけ、存在する場合は要素を返します。

何かのようなもの:

public WebElement getImage(String innerText)

次に、TEST1またはTEST2を渡すだけです

于 2012-10-11T16:01:36.283 に答える
0

元の XPath を使用すると、正常に動作し、Firefox と Chrome の両方の開発者ツールで実行され、img が返されます。それは実際に何かを返しますか、それとも期待したものを返さないだけですか? 要素が見つからないというエラーですか?

これはそれを取得する別の方法です:

//td[normalize-space(text())='TEST1']/../descendant::img/@src
于 2012-10-11T15:17:21.090 に答える