【发布时间】:2016-12-12 15:59:05
【问题描述】:
我正在尝试从here 中选择电子邮件、密码和登录元素。
元素有一个唯一的 ID,我可以通过检查它来复制 Xpath。
我已经尝试了这些查询,但无法弄清楚为什么 Selenium 找不到它。
WebElement emailfield = driver.findElement(By.id("lid"))
WebElement emailfield = driver.findElement(By.xpath("//*[@id=\'lid\']"));
WebElement emailfield = driver.findElement(By.xpath("//*[@id=lid]"));
驱动器能够打开并启动 chrome 来执行此操作。然而,我并不幸运。 请让我知道这些无效的方式。据我了解,id 应该是完全唯一的,但 By.id 和 By.xpath 方法都没有找到元素。
这是我的代码。
String email = "myemail";
String password = "the_password";
WebElement emailfield = driver.findElement(By.id("lid"));
emailfield.sendKeys(email );
WebElement passwordfield = driver.findElement(By.xpath("//*[@id=pwd]"));
passwordfield.sendKeys(password );
WebElement login = driver.findElement(By.id("submit_but"));
login.click();
这是 HTML 表格。
<table width="260" align="center" class="mob_width" cellspacing="2" cellpadding="1">
<tbody><tr>
<td colspan="2">
<h3 class="signintxt">Sign In</h3>
</td>
</tr>
<tr>
<td align="center" colspan="2"><span id="msgpanel"></span></td>
</tr>
<tr>
<td class="label">Email / Phone:</td>
<td align="left"><input name="lid" class="input usrbx" id="lid" onkeypress="clearmsg()" type="email" value=""></td>
</tr>
<tr>
<td class="label">Password:</td>
<td align="left"><input name="pwd" class="input passbx" id="pwd" onkeypress="clearmsg()" type="password"></td>
</tr>
<tr>
<td class="label"></td>
<td align="left"><div class="forgotpasslink"><span onclick="goToForgotPassword();">Forgot Password?</span></div>
</td></tr>
<tr id="hiptr" style="display: none;">
<td class="label"> </td><td align="left"> </td>
</tr>
<tr>
<td class="emptytd"></td>
<td height="30" class="mobile-height">
<div class="sectxt">
<label>
<input name="rem" id="rem" type="checkbox" value="10">
<span class="securetxt">Keep me signed in</span>
</label>
</div>
</td>
</tr>
<tr>
<td class="emptytd"></td>
<td align="left">
<button name="submit" class="submit_mobile" id="submit_but" type="submit">Sign In</button>
</td>
</tr>
</tbody></table>
这是一个编译的显式等待,等待 10 秒并给出相同的错误。
//explicit
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement aboutMe;
aboutMe= wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//form[@id='login']//*[@id='lid']")));
aboutMe.click();
【问题讨论】:
-
请发布该元素所在的 HTML 源代码部分。我看不出为什么无法从 Java 源代码中找到它。
-
查看帖子,我在页面上添加了表格。
-
你有什么错误吗?
-
线程“main”中的异常 org.openqa.selenium.NoSuchElementException:没有这样的元素:无法找到元素:{“method”:“xpath”,“selector”:“.//form[ @id='login']//*[@id='lid']"}
-
如果我通过 ID 或 Xpath 定位所有元素,它不能定位所有元素。我认为这可能是因为我刚刚下载了 selenium,但它至少打开了驱动程序并能够转到一个页面。
标签: java html xml selenium xpath