点击带有下划线的元素

本文关键字:元素 下划线 | 更新日期: 2023-09-27 17:52:44

我想填写一个表单,它的几个输入在 name 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">✓</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 IdName(异常抛出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");

点击带有下划线的元素

如果你有和我类似的情况,下面是解决方法。

不使用TextField

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

使用元素

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

工作像一个魅力!

搜索带有下划线的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上运行和测试的

其他notes

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

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