无法将类型字符串转换为Bool

时间:2016-12-07 08:01:24

标签: c# selenium-webdriver

如何将第一个元素转换为try块中的String?

我也尝试过转换ToString()。这也是投掷错误。

foreach (var column in elementIndex)
{
    try
    {
        columnHeaders[index] = driver.FindElements(By.CssSelector("#columntable" + table.TableID + " > div:nth-child(" + column + ")")).First(e => e.FindElement(By.CssSelector("div > div:nth-child(1) > span")).Text);                       
    }
    catch
    {
        columnHeaders[index] = driver.FindElement(By.XPath("//div[@id='columntablegrid']/div[" + column + "]/div/div")).Text;
    }                    
    index++;
}

3 个答案:

答案 0 :(得分:3)

First()需要bool参数,但您要提供string。你需要添加条件

First(e => e.FindElement(By.CssSelector("div > div:nth-child(1) > span")).Text.equals(parameterToCompare));
  

无法将类型字符串转换为Bool

表示在预期string时您已经bool,而不是相反。

答案 1 :(得分:2)

我相信你的问题就在这里

First(e => e.FindElement(By.CssSelector("div > div:nth-child(1) > span")).Text);

你需要这样的东西

First(e => e.FindElement(By.CssSelector("div > div:nth-child(1) > span")).Text == "your condition to bring back the first element");

答案 2 :(得分:1)

您需要在First子句中添加条件:

driver.FindElements(By.CssSelector("#columntable" + table.TableID + " > div:nth-child(" + column + ")"))
      .First(e => e.FindElement(By.CssSelector("div > div:nth-child(1) > span")).Text == "condition");