C#硒if语句

时间:2018-10-30 15:46:14

标签: c# selenium

所以我使用的是if语句,我会假设如果该语句没有找到/不执行它应该做的事情,那么它应该抛出异常对吗?出于某种原因,我什么也没得到,if语句不起作用,但是我没有异常?

代码示例-

try
{
    label1.Text = "Finding route";

    string sxp = "//*[@id='s']";

    if (driver.FindElements(By.XPath("sxp")).Count != 0)
    {
        driver.FindElement(By.XPath(sxp)).Click();
        label1.Text = "sxp done";
    }
}
catch
{
    CheckRoute();
    label1.Text = "Exception thrown";
}

我的程序返回“ if”语句后就没有响应,因为在此之前它将label1更改为指定的字符串。

2 个答案:

答案 0 :(得分:2)

由于您正在使用if语句进行检查,因此它与Exception throw无关。删除if,它将在找不到元素时抛出exception。如果我没有记错的话,也用e.Message()访问该消息。您的情况应该是ElementNotFoundException

 try
 {
     label1.Text = "Finding route";
     string sxp = "//*[@id='s']";
     driver.FindElement(By.XPath(sxp)).Click();
     label1.Text = "sxp done";
 }
 catch(Exception e)
 {
     CheckRoute();
     label1.Text = "Exception thrown";
 }
 catch(ElementNotFoundException e)
 {
     Console.WriteLine(e.Message());
 }

答案 1 :(得分:0)

我认为您对@DELETE @Path("types/{typeId}") @Produces(MediaType.APPLICATION_JSON) public ResponseEnvelope.EmptyEnvelope deleteType(@PathParam("typeId") String deleteTypeId)和它们的工作方式感到困惑。如果if不评估为if,则不会引发异常。在某些特殊情况下,当发生意外情况时会引发异常。例如,如果您使用true而未找到该元素...则会抛出ElementNotFoundException。

对于您来说,您做对了事,并使用了driver.FindElement()(复数),因此,您的代码不会引发异常。因此,因此,您可以删除.FindElements(),并且其他简化操作将导致以下代码。

try-catch

我将label1.Text = "Finding route"; IReadOnlyCollection<IWebElement> routes = driver.FindElements(By.Id("s")); if (routes.Count > 0) { routes.ElementAt(0).Click(); label1.Text = "sxp done"; } else { CheckRoute(); label1.Text = "sxp not found"; } 的结果集合存储在变量.FindElements()中,以便可以重用。您的代码两次进入页面。我删除了routes,因为它是不需要的。