Watin抓取c#单击按钮提交页面忽略输入的文本框值

时间:2016-05-26 08:44:25

标签: watin

您好我试图通过watin代码点击搜索按钮

IE ie = new IE();
ie.GoTo("http://www.apartments.com/");
ie.TextField(Find.ById("quickSearchLookup")).TypeText("5000");
Link link = ie.Link(Find.ByUrl("http://www.apartments.com/search/"));
link.Click();

我也试过这个

ie.TextField(Find.ById("quickSearchLookup")).Focus();
ie.TextField(Find.ById("quickSearchLookup")).Value = "5000";

而不是输入文字

但是点击它时会忽略我在文本框中输入的值并获得默认值 这是页面的html源代码

<input type="text" id="quickSearchLookup" class="quickSearchLookup hasPrefilledValue" autocorrect="false" placeholder="Search by Location or Point of Interest">

and here is the click button
<a href="http://www.apartments.com/search/" class="go" title="Search apartments for rent"><span>Go</span></a>

1 个答案:

答案 0 :(得分:0)

该网站有代码,因此每当您专注于该页面时,它将清除文本框并从头开始。如果您正在运行程序并来回切换搜索框将被清除,请尽量避免这样做(SHIFT + TAB将焦点设置在IE-Chrome上等)。

以下代码可以满足您的需求,只需让它运行并在完成后返回浏览器(或者更好的是,如果您有多个监视器设置了代码顶部的断点,那么只需要浏览器打开将其移动到第二个监视器,您将能够在单步执行时看到发生的一切。

    using (IE ie = new IE())
    {
        ie.GoTo("http://www.apartments.com/");
        ie.ShowWindow(WatiN.Core.Native.Windows.NativeMethods.WindowShowStyle.ShowMaximized);
        ie.WaitForComplete();
        ie.TextField(Find.ById("quickSearchLookup")).TypeText("5000");
        var go = ie.Link(Find.ByClass("go"));
        if (go.Exists)
        {
            go.Click();
        }
    }

希望这有帮助。