2014-10-29 34 views
2

我使用C#.NET 4和Selenium WebDriver 2.44.0.0和chromeDriver。 当它无法找到元素,硒抛出错误:C#如何从NoSuchElementException获取方法和选择器

no such element 
(Session info: chrome=38.0.2125.104) 
(Driver info: chromedriver=2.10.267521,platform=Windows NT 6.1 SP1 x86_64) 


但我想知道哪些元素是缺少。我看到一些文章说,它可以显示这样的细节:

OpenQA.Selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"hello"} 


谁能告诉我怎么去从NoSuchElementException异常的方法和选择?


这里是我的代码

try 
{ 
    for(int i=0; i<10; i++) 
    { 
      string className = "items-" + i; 
      IWebElement t = Driver.FindElement(By.CssSelector("[class$='" + className + "'] > span")); 
      t.Click(); 
    } 
} 
catch (NoSuchElementException ex) 
{ 
    Logger.Error("Error: " + ex.Message); 
    Debug.WriteLine(ex.Message); 
} 
+0

你真的应该避免“例外编码”。例外情况应该是特例 - 例如硬盘空间不足或网络连接失败。如果你正在编写代码,并希望你的代码能够“正常”工作,那么你做错了什么。 – Enigmativity 2014-10-31 06:42:17

回答

1

By定位器的.ToString()方法返回所要求的内容。

据我所知,异常本身不包含信息。但是,处理异常并将其与在抛出它的FindElement()方法中使用的定位器函数相关联是非常直接的。

例如,如果在第5次迭代的元素不能被发现,下面的代码会产生此消息

Error: no such element

Error: Unable to find element using function By.CssSelector: [class$='items-4'] > span

By locator;  // need to declare this outside the scope of the try block 
       // so it can be accessed in the catch block 
try 
{ 
    for(int i=0; i<10; i++) 
    { 
      string className = "items-" + i; 
      locatorFunction = By.CssSelector("[class$='" + className + "'] > span") 
      IWebElement t = Driver.FindElement(locatorFunction); 
      t.Click(); 
    } 
} 
catch (NoSuchElementException ex) 
{ 
    Logger.Error("Error: " + ex.Message); 
    Logger.Error("Error: Unable to find element using function " + locatorFunction.ToString()); 
} 
+0

感谢您的回答。但我想避免修改当前脚本。是否可以配置Selenium在异常消息中显示更多详细信息? – Buaban 2014-10-30 03:54:23

+0

除了消息之外,您还可以选择获取StackTrace。你还在寻找哪些其他信息? – Saifur 2014-10-30 13:02:13

+0

我不认为有任何Selenium异常的配置选项。我在回答中添加了一段,以明确这是一种将信息与异常关联的方式,而不是从异常本身中提取信息。 – 2014-10-30 15:42:34

1

参考硒API文档的.NET发现here。 但是,我不认为它会给你想要的异常跟踪方面。打印您正在使用的选择器,可以帮助您识别抛出错误的元素

+0

谢谢。我将使用来自John O的解决方法。 – Buaban 2014-10-30 03:49:34

相关问题