以下是我的HTML代码:
<div class="dropdown">
<button class="dropdown-toggle" type="button" id="dropdownMenu14"
data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
<ul class="dropdown-menu" aria-labelledby="dropdownMenu14">
<li><a href="#" data-toggle="modal" data-target="#LoginModel">Login</a></li>
</ul>
以下是我的硒代码 我每次都得到Null Pointer Exception。
public void test3() throws Exception {
// System.setProperty("webdriver.chrome.driver","D:\\chromedriver.exe");
driver.get(baseUrl);
driver.findElement(By.xpath("//button[@id='dropdownMenu14'])")).click();
//driver.findElement(By.id("dropdownMenu14")).click();
driver.findElement(By.id("create_login")).click();
driver.findElement(By.name("username")).click();
driver.findElement(By.name("username")).clear();
driver.findElement(By.name("username")).sendKeys("Jahnvi");
driver.findElement(By.name("password")).clear();
driver.findElement(By.name("password")).sendKeys("123456");
driver.findElement(By.id("check_login")).submit();
driver.findElement(By.linkText("Login")).click();
driver.findElement(By.xpath("(//input[@value='Login Your Account'])[2]")).click();
driver.findElement(By.id("dropdownMenu14")).click();
driver.findElement(By.id("logout_button")).click();
}
答案 0 :(得分:3)
我尝试了以下代码并且它有效,我尝试了xpath而不是id,name等。 可以请任何人解释为什么它适用于xpath而不是id。
@Test
public void test3() throws Exception {
driver.get(baseUrl);
driver.findElement(By.xpath("//*[@id=\"dropdownMenu14\"]")).click();
//driver.findElement(By.id("dropdownMenu14")).click();
//driver.quit();
driver.findElement(By.xpath("//*[@id=\"header\"]/section[1]/div/div/div[2]/div/ul/li[1]/div/div[1]/ul/li/a")).click();
//driver.findElement(By.xpath("//*[@id=\"check_login\"]/div[1]/input")).click();
//driver.findElement(By.xpath("//*[@id=\"check_login\"]/div[1]/input")).clear();
driver.findElement(By.xpath("//*[@id=\"check_login\"]/div[1]/input")).sendKeys("Jahnvi");
// driver.findElement(By.xpath("//*[@id=\"check_login\"]/div[2]/input")).clear();
driver.findElement(By.xpath("//*[@id=\"check_login\"]/div[2]/input")).sendKeys("123456");
driver.findElement(By.xpath("//*[@id=\"check_login\"]/div[4]/input")).submit();
driver.findElement(By.xpath("(//input[@value='Login Your Account'])[2]")).click();
//driver.findElement(By.xpath("//*[@id=\"dropdownMenu14\"]")).click();
}
答案 1 :(得分:1)
如果有多个HTML标记,其id =&#34; create_login&#34;然后selenium会返回它无法找到的元素。 要调试空引用异常,我们需要更多信息,例如完整页面的HTML DOM,以及您正在使用的selenium webdriver版本。