C#Selenium遍历XPath结果

时间:2018-11-13 19:30:47

标签: c# loops selenium xpath

如何遍历同一Xpath的每个结果? 我的代码:

IList<IWebElement> base = driver.FindElements(By.XPath("/html/body/table/tbody/tr[2]/td[2]/table[2]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/div[4]/div/table/tbody//td[contains(@style,'text-align: center;')and contains(text(),'?')]/following-sibling::td[1]"));

    String[] baseALL = new string[base.Count];
    int i = 0;

        foreach (IWebElement elm in base)
        {

            string uhm = driver.FindElement(By.XPath("/html/body/table/tbody/tr[2]/td[2]/table[2]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/div[4]/div/table/tbody//td[contains(@style,'text-align: center;')and contains(text(),'?')]/following-sibling::td[1]")).Text;
            string liczba = uhm;
            Console.WriteLine(liczba);
            double d = Convert.ToDouble(liczba.Replace(".", ","));
            if (d < 10)
            {
                foreach (IWebElement wyslij in base)
                {    driver.FindElement(By.XPath("/html/body/table/tbody/tr[2]/td[2]/table[2]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/div[4]/div/table/tbody//td[contains(@style,'text-align: center;')and contains(text(),'?')]/following-sibling::td[2]/a")).Click();
                }
            }

            driver.FindElement(By.XPath("//td//table//td//a[@class='manager_icon'] [@title='Asystent Farmera']")).Click();
    }

我的xpath给出类似

的结果
<td>1.8</td>
<td>3.2</td>
<td>4.8</td>
<td>7.8</td>

我想遍历每一个并进行比较(如果其小于10,请单击此处) 但是,它总是选择第一个结果,我如何跳到下一个?单击循环相同。

1 个答案:

答案 0 :(得分:0)

使用相对xpath而不是绝对xpath。

查找元素始终返回第一个元素。您必须通过包含nth来更改xpath。

尝试此操作,如果不起作用,请将html添加到问题中。

int i = 0;

foreach (IWebElement elm in base)
{
    i++;
    string uhm = driver.FindElement(By.XPath("/html/body/table/tbody/tr[2]/td[2]/table[2]/tbody/tr/td/table/tbody/tr/td/table/tbody/tr/td/div[4]/div/table/tbody//tr["+i+"]/td[contains(@style,'text-align: center;')and contains(text(),'?')]/following-sibling::td[1]")).Text;
    string liczba = uhm;
    Console.WriteLine(liczba);
}