C# 如何在Watin等邮件?
在我的C#code中,我使用C# 如何在Watin等邮件?,c#,web,watin,C#,Web,Watin,在我的C#code中,我使用Watin浏览网页,要登录到某个页面,我需要单击登录按钮,但在我想注销之后,我立即使用了单击注销按钮,但注销部分不起作用。我甚至尝试在登录后关闭浏览器(使用close方法),但没有成功。感觉上,一旦页面被更改(即登录后),c#的命令就不再有效 有人知道出了什么问题吗?watin click命令等待浏览器加载,实际上它会等待回发。 如果您使用ClickNoWait()命令,它将不会等待。 因此,如果您的代码看起来像这样,它应该可以工作: browser.GoTo("ww
Watin
浏览网页,要登录到某个页面,我需要单击登录按钮,但在我想注销之后,我立即使用了单击注销按钮,但注销部分不起作用。我甚至尝试在登录后关闭浏览器(使用close方法),但没有成功。感觉上,一旦页面被更改(即登录后),c#的命令就不再有效
有人知道出了什么问题吗?watin click命令等待浏览器加载,实际上它会等待回发。 如果您使用ClickNoWait()命令,它将不会等待。 因此,如果您的代码看起来像这样,它应该可以工作:
browser.GoTo("www.your-site.com");
// fill user/pass
browser.Button(Find.ByClass("login-class")).Click();
browser.Button(Find.ByClass("logout-class")).Click();
如果它仍然不起作用,您可以在登录后添加它,单击browser.WaitForComplete()在脚本中使用Thread.sleep与注销和登录同步。。。 或
您可以直接关闭应用程序并使用ie实例重新登录到另一个应答线程中提到的应用程序,而不是注销。睡眠(毫秒)是等待一段时间以加载某个内容的一种方式。非常、非常容易实现,但由于负载时间的变化,它远远不是最优的,如果您让它等待足够长的时间,那么最终将浪费大量的时间。在一次测试中,这并不是什么大问题,但例如,如果您必须等待5秒,并且您有1000次测试。。。。等等等等等等 我走的路线是:
<code>
TextField uName = browser.TextField(Find.ByName("userName"));
if(uName.Exists)
{
// Then do the login code....
}
</code>
同样,在继续执行代码之前,您应该控制登录后的页面是否存在。例如,如果您登录到一个页面,您知道该页面将包含文本:“您的帐户详细信息”,您可以执行以下操作:
<code>
browser.GoTo("http://www.yourdomain.com/login.aspx");
//do your login code
browser.WaitUntilContainsText("Your Account Details", 240); // the second parameter indicates the seconds it will wait before it times out.
// your code to deal with the page after the login.
</code>
使用Thread.Sleep会造成混乱,这肯定是个问题,你永远都不会在网页上找到正确的时间(即使你认为需要10秒,它可能永远不会回来,此时服务器将终止打开的连接)
希望能有所帮助。OCary,你说得对,但很少有人会这样想。睡眠必须在上述情况下使用。如果网站的响应时间不可预测,尤其是在响应时间不可预测的情况下,您希望等待加载所需的时间,而不是等待任意长度的时间。我通过等待正确的项而不是使用sleep()从测试套件中删除了大量的执行时间。