我尝试抓住html表单填写它。
这是目标html来源。
<span class="login-id">
<div id="LoginId">
<input maxlength="100" name="uji.model.635939.value">
<input type="hidden" name="uji.model" value="uji.model.635939">
<input type="hidden" name="uji.model.635939" value="com.fujitsu.uji.compo.taglib.FieldStringUpdater;vkaiinNinshoID">
</div>
<span class="example">(半角英数字)</span>
</span>
我专注于<input maxlength="100" name="uji.model.635939.value">
。
每当我连接时,数字635949
都会改变。
这是我的代码。我使用for
来处理多个案例。
for (int i = 600000; i < 699999; i++)
{
string s = i.ToString();
try
{
IWebElement id = driver.FindElement(By.Name(String.Format("uji.model.{0}.value", s)));
id.SendKeys("******@gmail.com");
}
catch(OpenQA.Selenium.NoSuchElementException e)
{
Console.WriteLine("exception {0}", s);
}
}
我想知道我的代码是否正确。我不确定(By.Name(String.Format("uji.model.{0}.value", s)
是否正确。
BTW,maxlength="100"
是html源代码中的唯一表达式。
有没有办法用这个填写表格?谢谢你的阅读。
答案 0 :(得分:2)
尝试定位元素是一项昂贵的操作。目前,您正在执行此操作高达100K次,并捕获所有故障的异常,这是另一项昂贵的操作。也可能有数字不在指定的范围内。
我建议您使用其唯一ID
的父元素找到元素driver.FindElement(By.CssSelector("#LoginId > input:nth-child(1)"));
这将为您提供<input>
<div id="LoginId">
孩子
如果您不想使用索引,请在value
属性
name
的元素
driver.FindElement(By.CssSelector("#LoginId > input[name*='value']"));