我在if / else语句中遇到了stackoverflow异常..
代码示例:
if (driver.FindElements(By.XPath("//*[@id='modal']/div/div/div/p[contains(text(), 'Hello World')]")).Count != 0)
{
Console.WriteLine("Hello World");
}
else
{
RunOtherFunction();
}
突出显示的错误代码是 -
if (driver.FindElements(By.XPath("//*[@id='modal']/div/div/div/p[contains(text(), 'Hello World')]")).Count != 0)
很明显,由于没有找到指定的元素而引发异常,但是我用else语句覆盖了它?
所以我不明白为什么它会抛出一个异常因为如果找不到Element那么它应该执行“RunOtherFunction();”而不是抛出异常?
答案 0 :(得分:0)
突出显示的行是正确的。它在第一行抛出异常,因为你没有try catch块,所以它不会进入else。
答案 1 :(得分:0)
基于Java观点的答案:
我使用类似的用例做了一个小测试:
https://www.google.com/
findElements()
在id
循环的页面上查找if-else {}
为 Rs_Sele 的元素,并使用!=
运算符与<进行比较强> 0 强> 以下是示例代码:
WebDriver driver = new ChromeDriver(options);
driver.get("https://www.google.com/");
if(driver.findElements(By.id("Rs_Sele")).size() !=0)
System.out.println("Atleast one element was found");
else
System.out.println("No element was found");
控制台输出:
No element was found
findElements()
方法返回空列表,比较后控件转到else {}
块并打印未找到任何元素 driver.FindElements(By.XPath("//*[@id='modal']/div/div/div/p[contains(text(), 'Hello World')]"))
返回空列表 else {}
块并随后调用RunOtherFunction()
函数。如果您正在观察 stackoverflow异常,那是因为函数 RunOtherFunction();
您可以在 StackOverflowException 中找到类似的讨论: