一尘不染

ImageTag是否存在于TR中?

selenium

编辑:

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,因为它不具有图像标记及其所在的TEST1TEST4确实有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>

阅读 237

收藏
2020-06-26

共1个答案

一尘不染

因此,我将其分解为几个步骤。

首先获取您的元素:

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

2020-06-26