0

我正在尝试填写表格,其中的几个输入在nameand中有下划线id。我想知道这是否会导致问题。

<fieldset>
<label for="user_name">Username</label>
<div class="goodorbad">
<span id="user_name-loading" class="free-or-taken fot-loading">
<img width="24" alt="Checking…" src="/i/loading/fresh-64.gif">
Checking...
</span>
<span id="user_name-free" class="free-or-taken" title="Available">✓&lt;/span>
<span id="user_name-taken" class="free-or-taken" title="Taken">×</span>
</div>
<input id="user_name" type="text" autocomplete="off" tabindex="10" autocorrect="off" autocapitalize="off" maxlength="50" value="" name="user_name">
<div class="suggestions">
</fieldset>

出于某种原因,我无法Element通过Idor Name(Exception throw ElementNotFound)找到它。

这是我迄今为止尝试过的(下面的代码都没有工作)

browser.ElementOfType<TextFieldExtended>(Find.ByClass(new Regex("user.name"))).TypeText("gfgh");

browser.TextField(Find.ById(new Regex("user.name"))).TypeText("gfgh");

browser.TextField(Find.ById("user%5Fname")).TypeText("gfgh");

browser.ElementOfType<TextFieldExtended>("user_name").TypeText("gfgh");

browser.ElementOfType<TextFieldExtended>("user_name").Value="FFF";

browser.Table(Find.ByClass("form-table")).TextField(Find.ByClass("user_name")).TypeText("gfgh");

browser.TextField(Find.ById("user_name")).TypeText("gfgh");
4

2 回答 2

1

如果你有和我类似的情况,这里是如何解决的。

而不是使用 TextField

 browser.TextField(Find.ById("someID")).TypeText("someText");

使用元素

 browser.Element(Find.ById("someID")).SetAttributeValue("value","someText");

奇迹般有效!

于 2013-01-13T11:39:21.427 回答
0

使用下划线搜索 ID 和名称就可以了;我一直都这样做。可能的原因是您没有正确的 ID 或名称(<- 这是最有可能的),文本框在框架中(不太可能),或者您没有针对正确运行的浏览器运行 WatiN 代码;这还包括弹出窗口和对话框。(不太可能)。

示例 HTML - 为清楚起见,对 id 进行了轻微更改

<html>
<body>
<input name="user_name" id="user_id" value="" maxlength="50" autocapitalize="off" autocorrect="off" tabindex="10" autocomplete="off" type="text">
</body>
</html>

示例 C#/WatiN

IE myIE = new IE();
myIE.GoTo("theCorrectURL");
myIE.TextField("user_id").TypeText("Found By ID");
System.Threading.Thread.Sleep(500);  //not needed other than to watch what is happening
myIE.TextField(Find.ByName("user_name")).TypeText("Found By Name");

以上在 WatiN 2.1、IE9、Win7-64 上运行和测试

其他注意事项

1) Find.ByClass("user_name") 不会找到它,因为您的标签上没有定义 CSS 类。如果你有,那么你可以搜索 Find.ByClass("theCssClass")。

2) 浏览器的类型将是 WatiN.Core.IE (或者可能是 .Firefox) 如果它确实是 Windows.Forms.WebBrowser 我会非常惊讶。

于 2013-01-11T19:59:19.557 回答