【发布时间】:2014-12-17 02:27:07
【问题描述】:
我在页面上有一个文本字段和一个按钮:
<textarea class="txCS" id="text-area"></textarea>
<span id="search-button">Search</span>
我尝试的很简单,在文本字段中写一些文本,然后点击“搜索”。
browser.TextField("text-area").TypeText("Some Text");
browser.Span("search-button").Click();
TypeText() 有效,我看到我的文本写在文本字段上,Click() 也有效,因为我看到 WatiN 在单击按钮时突出显示它,但单击按钮时没有任何反应。
当我自己单击按钮时,仍然没有任何反应,但是当我在文本字段中手动输入内容并单击“搜索”时,一切正常,就好像该页面知道人类是否正在与该页面进行交互并允许搜索...
我监控了当我在文本字段中键入某些内容时触发的事件,然后尝试使用 WatiN 触发它们:
searchBox.FireEvent("onmouseover");
searchBox.FireEvent("onmousemove");
searchBox.FireEvent("onmousedown");
searchBox.FireEvent("onfocus");
searchBox.FireEvent("onmouseup");
searchBox.FireEvent("onclick");
searchBox.FireEvent("onkeydown");
searchBox.FireEvent("onkeypress");
searchBox.FireEvent("onkeyup");
searchBox.FireEvent("onchange");
searchBox.FireEvent("onblur");
那也没用。我在这里做错了吗?
【问题讨论】:
-
我无法解决它,不得不切换到 Selenium,现在一切都很好。
-
你真的应该在 HTML 中使用
<button type="button">Search</button>。<span>元素从未打算成为用户可以与之交互的东西。如果<button>元素应用了不需要的样式,那么使用<a>也可以。 -
您能否在浏览器中发布影响文本字段和“搜索”按钮的 JavaScript?答案可能就在那儿。您可能需要在输入文本后调用
textfield.Change(),然后再单击<span>。
标签: javascript browser automation watin