OpenQA.Selenium.NoSuchElementException 未被 c# selenium 中的用户代码处理
OpenQA.Selenium.NoSuchElementException was unhandled by user code in c# selenium
我想用显式 wait.But 等待我的硒程序最多 30 秒 (GlobalVar.timetomaximumwait),当它无法找到它暂停在 wait.until(... ) 行并显示 OpenQA.Selenium.NoSuchElementException 未被用户代码处理
如果我按继续或按 F10,它会再次尝试查找该元素并继续为我定义的时间垃圾邮件。
无法理解为什么程序暂停并且错误消息出现在两者之间。
我正在使用 VS2010,c#,selenium 2.45,即 9
非常感谢任何形式的帮助。
public string SetValueInTextBox(string InputData, string xPathVal)
{
try
{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(GlobalVar.timetomaximumwait));
wait.Until<IWebElement>((d) =>
{
return d.FindElement(By.XPath(xPathVal));
});
IWebElement TargetElement = driver.FindElement(By.XPath(xPathVal));
// IWebElement TargetElement = driver.FindElement(By.XPath(xPathVal));
elementHighlight(TargetElement);
TargetElement.Clear();
TargetElement.SendKeys(InputData);
//driver.FindElement(By.XPath(xPathVal)).SendKeys(InputData);
return "Pass";
}
catch (Exception e)
{
return "Fail";
}
finally
{
// string SSName = "temp.jpg";
TakeScreenshot("SetValueInTextBox");
}
}
问题出在这里:
wait.Until<IWebElement>((d) =>
{
return d.FindElement(By.XPath(xPathVal));
});
您需要处理未找到元素时抛出的异常。
wait.Until<IWebElement>((d) =>
{
try
{
return d.FindElement(By.XPath(xPathVal));
}
catch(NoSuchElementException e)
{
return null;
}
});
我建议在 catch 块中添加一些日志记录,这样您就知道每次驱动程序找不到元素时。
我想用显式 wait.But 等待我的硒程序最多 30 秒 (GlobalVar.timetomaximumwait),当它无法找到它暂停在 wait.until(... ) 行并显示 OpenQA.Selenium.NoSuchElementException 未被用户代码处理 如果我按继续或按 F10,它会再次尝试查找该元素并继续为我定义的时间垃圾邮件。 无法理解为什么程序暂停并且错误消息出现在两者之间。 我正在使用 VS2010,c#,selenium 2.45,即 9
非常感谢任何形式的帮助。
public string SetValueInTextBox(string InputData, string xPathVal)
{
try
{
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(GlobalVar.timetomaximumwait));
wait.Until<IWebElement>((d) =>
{
return d.FindElement(By.XPath(xPathVal));
});
IWebElement TargetElement = driver.FindElement(By.XPath(xPathVal));
// IWebElement TargetElement = driver.FindElement(By.XPath(xPathVal));
elementHighlight(TargetElement);
TargetElement.Clear();
TargetElement.SendKeys(InputData);
//driver.FindElement(By.XPath(xPathVal)).SendKeys(InputData);
return "Pass";
}
catch (Exception e)
{
return "Fail";
}
finally
{
// string SSName = "temp.jpg";
TakeScreenshot("SetValueInTextBox");
}
}
问题出在这里:
wait.Until<IWebElement>((d) =>
{
return d.FindElement(By.XPath(xPathVal));
});
您需要处理未找到元素时抛出的异常。
wait.Until<IWebElement>((d) =>
{
try
{
return d.FindElement(By.XPath(xPathVal));
}
catch(NoSuchElementException e)
{
return null;
}
});
我建议在 catch 块中添加一些日志记录,这样您就知道每次驱动程序找不到元素时。