我有这个:
public static void ByLinkText(string text)
{
for (var i = 0; i < 50; i++)
{
try
{
Setup.Driver.FindElement(By.LinkText(text)).Click();
return;
}
catch (Exception)
{
}
}
}
(中间奇怪的代码是硒-让我们跳过它,这里不是这种情况)
好的,所以我有这个ByLinkText()方法,您在这里看不到的是,我无限地重复此方法,直到中间的东西将正确执行,然后再按返回.
所以:这个中间代码没有正确执行,我想知道为什么,所以我在做什么?我在catch部分设置了一个断点.怎么了?什么都没有(和ByLinkText()仍然无限前进!).
现在,您会告诉我:“嘿!中间代码什么都没扔!”,但是,哦,我的祝福……那个中间代码可以做两件事:要么向我扔东西,要么按自己的意愿去做(prove1和prove2).
那么最后,这是怎么回事?关于断点.只要将断点放在该返回值上(紧接在神奇的代码之后!),该代码就会正确执行!在程序世界中,断点如何修复我的应用程序!!
解决方法:
当断点使您的应用程序运行时,这意味着您的代码可能存在时序问题.每当您在断点处停止时,停止都会引入延迟,这可能会使其他处理继续进行而不会出错.
这就是为什么有时会看到Thread.Sleep(N)的原因.到处乱扔代码.那是一位编码员举起双臂说:“我不知道.只是在那儿睡觉”.
实际上,请尝试一下.放一个Thread.Sleep(3000);断点在哪里,看看会发生什么.我从不建议将其用作解决方案,但它可以很好地验证该理论.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。