这是我的页面:
Variant (String)
我正在尝试使用selenium获取元素<table class="formarea" border="0" cellspacing="0" cellpadding="0" width="100%">
<tbody>
<tr>
<td class="form_label_40">
<script>prints(ot_login_username);</script>Username :</td>
<!--<td></td>-->
<td>
<input type="text" maxlength="16" size="12" id="login_name">
</td>
</tr>
<tr>
<td class="form_label_40">
<b>
<script>prints(ot_login_password);</script>Password :</b>
</td>
<td>
<input type="password" maxlength="16" size="12" id="login_pass">
<!--<script>prints("<input type='button' value='"+ot_login_login+"' onclick='checkForm();'>");</script>-->
</td>
</tr>
和login_name
:
login_pass
但我收到错误driver.FindElement(By.Id("login_name"))
driver.FindElement(By.Id("pass_name"))
为什么呢?
答案 0 :(得分:1)
根据您分享的HTML
,您已尝试通过id
找到元素 login_name 和 login_pass ,但未识别元素唯一。要识别唯一性,您必须采用Locator Strategy
,如下所示:
//login_name field
driver.FindElement(By.XPath("//table[@class='formarea']//input[@id='login_name']"))
//login_pass field
driver.FindElement(By.XPath("//table[@class='formarea']//input[@id='login_pass']"))
答案 1 :(得分:0)
我认为你的问题在于selenium中的以下代码:
driver.FindElement(By.Id("pass_name"))
,但在html中,您要查找的ID是:<input type="password" maxlength="16" size="12" id="login_pass">
,即login_pass。
如果我错了,请纠正我......
BTW,如果我理解正确,X-Path很容易受到代码的影响:/