我想等待我的selenium程序最多30秒(GlobalVar.timetomaximumwait)和显式wait.But什么时候无法找到它在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");
}
}
答案 0 :(得分:2)
问题在于:
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块中添加一些日志记录,这样你就知道每次驱动程序都找不到元素。