我使用这个简单的代码测试WatiN库:
using (var browser = new IE("http://www.google.de"))
{
browser.TextField(Find.ByName("q")).TypeText("WatiN");
Button btn1 = browser.Button(Find.ById("gbqfba"));
btn1.Click();
while (!browser.ContainsText("watin.org"))
{
System.Threading.Thread.Sleep( 500 );
btn1.Click();
}
}
无论如何,当我在某个地方有一个断点的调试模式下运行时,它工作正常,但是一旦我在发布模式下运行它就会输入所需的文本,但按钮似乎没有被点击,所以我有一个搜索字段在其中的文字,我没有得到任何搜索结果。
有关此问题的任何已知问题?有任何想法吗?
谢谢
答案 0 :(得分:1)
您需要在代码中插入等待,直到所有内容都加载完毕,然后您才能找到控件。
它在调试模式中工作,因为,在使用断点进行调试时,可以完全加载时间。
答案 1 :(得分:1)
我也是一个WatiN新手,在我开始工作之前我花了一段时间。首先,阅读此解决方案:
您可能必须尝试不同的方法来实施解决方案,以使其适合您。例如:
首先我放线
browserInstance.NativeDocument.Body.SetFocus(); // set focus befor u click
在“单击”操作之前,但仅在调试模式下工作(我的代码以前根本不起作用,所以让它在调试模式下工作就是进步)。
然后我将该行放在每个项目之前,让它在运行模式下工作:
browserInstance = new IE(@"http://www.google.com");
TextField criteria = browserInstance.TextField(tf => tf.Name == "q");
browserInstance.NativeDocument.Body.SetFocus(); // set focus befor u click
criteria.TypeText("Come Jam With Us");
browserInstance.NativeDocument.Body.SetFocus(); // set focus befor u click
browserInstance.Button(Find.ById("gbqfb")).Click();
我不确定为什么会这样,但我希望它有所帮助。