ImageTag存在于TR?

Nic*_*ahn 2 selenium webdriver selenium-webdriver

编辑:

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;
}
Run Code Online (Sandbox Code Playgroud)

我怎么知道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));
Run Code Online (Sandbox Code Playgroud)

得到此错误:尝试上述代码后...

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>
Run Code Online (Sandbox Code Playgroud)

Fal*_*ter 5

所以我会将其分解为几个步骤.

首先得到你的元素:

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

然后获取父元素:

WebElement parent = element.findElement(By.xpath(".."));
Run Code Online (Sandbox Code Playgroud)

然后检查父元素是否有<img>标记:

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

我将它包装在一个函数中,然后我可以在文本中传递以查找图像并返回元素(如果存在).

就像是:

public WebElement getImage(String innerText)
Run Code Online (Sandbox Code Playgroud)

然后只需传入TEST1或TEST2

  • + 1'这是因为它实际上是一种更好的方法.我唯一要说的是在XPath中具体,不要使用`*`,而是使用`td`. (2认同)