selenium每次都无法找到Elements给我异常

时间:2018-05-17 10:36:32

标签: html selenium

以下是我的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();
}

2 个答案:

答案 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版本。