无法通过ID获取带有selenium的元素

时间:2018-01-13 10:03:48

标签: c# selenium

这是我的页面:

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&nbsp;:</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&nbsp;:</b> </td> <td> <input type="password" maxlength="16" size="12" id="login_pass">&nbsp;&nbsp; <!--<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")) 为什么呢?

2 个答案:

答案 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很容易受到代码的影响:/