根据XPath的单元格内容选择表格行中按钮的第一个实例

时间:2018-03-26 17:45:55

标签: c# selenium selenium-webdriver xpath webdriver

大家好日子!如果第四个单元格文本= 0,我正在努力点击第一个单元格中的按钮。我试图遍历表格行,直到遇到[td[1][button[text() = 'Review']td[4][a[text() = '0']

代码如下,任何建议将不胜感激。

IWebElement baseTable = Browser.Driver.FindElement(By.XPath("//*[@id='summaryGrid']/table/tbody"));
ICollection<IWebElement> rows = baseTable.FindElements(By.TagName("tr"));
foreach (var row in rows)
{
    bool x = row.FindElement(By.XPath("//tr[td[1][button[text() = 'Review']] and td[4][a[text() = '0']]]")).Displayed;

    if (x == true)
    {
        row.FindElement(By.XPath("//tr[td[1][button[text() = 'Review']] and td[4][a[text() = '0']]]//button[0]")).Click();
        break;
    }
}

2 个答案:

答案 0 :(得分:0)

这个xpath应该按照你提供的条件给你第一个单元格中的所有第一个按钮

//tr/td[1][/button[text() = 'Review'] and /td[4]/a[text() = '0']]/button[1]

然后你可以迭代它并在每个元素上单击()。

抱歉,我不是C#人,所以请将其作为解决方案的大纲

ICollection<IWebElement> buttons = baseTable.FindElements(By.XPath("//tr/td[1][/button[text() = 'Review'] and /td[4]/a[text() = '0']]/button[1]"));
foreach (var button in buttons)
{
    button.Click();
}

答案 1 :(得分:0)

要点击第一个<td>元素,并在第一个单元格中将文字显示为审核,以便第四个<td>元素的文字 0 可以使用以下代码块:

IWebElement forthRowElement = Browser.Driver.FindElement(By.XPath("//*[@id='summaryGrid']/table/tbody//tr//following-sibling::td[4]"));
if (forthRow.Text == '0')
{
    forthRow.FindElement(By.XPath("//self::td//preceding::td[3]")).Click();
}