Selenium webdriver 应用thread.sleep和隐式等待后找不到元素

Selenium webdriver 应用thread.sleep和隐式等待后找不到元素,selenium-webdriver,Selenium Webdriver,应用thread.sleep和隐式等待后,我无法找到该元素。引发以下错误: org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"serverName"} Command duration or timeout: 10.09 seconds For documentation on this error, please visit: http://selen

应用thread.sleep和隐式等待后,我无法找到该元素。引发以下错误:

org.openqa.selenium.NoSuchElementException: Unable to locate element: {"method":"id","selector":"serverName"}
Command duration or timeout: 10.09 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/no_such_element.html
Build info: version: '2.32.0', revision: '6c40c18', time: '2013-04-09 17:22:56'
System info: os.name: 'Windows 8', os.arch: 'amd64', os.version: '6.2', java.version: '1.7.0_25'
Session ID: f66446c1-f261-4c90-b74f-b4a5ecce3eb4
Driver info: org.openqa.selenium.firefox.FirefoxDriverpublic void testEmptydatabase() throws Exception {



driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
      driver.findElement(By.linkText("Home")).click();
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
      driver.findElement(By.cssSelector("u")).click();
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
      driver.findElement(By.id("monitor")).click();
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
      driver.findElement(By.cssSelector("span.ui-icon.ui-icon-plus")).click();
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
   driver.findElement(By.cssSelector("#add_profileDetailTable > div.ui-pg-div")).click();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("profileName")).clear();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("profileName")).sendKeys("new");
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("profileDescription")).clear();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("profileDescription")).sendKeys("test");
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.name("createProfile")).click();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("serverName")).clear();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("serverName")).sendKeys("192.168.32.16");
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.xpath("(//input[@name='monitors'])[11]")).click();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("nextStep")).click();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("userPassword")).clear();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);

  driver.findElement(By.id("userPassword")).sendKeys("root");
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.xpath("//button[@value='Establish Connection']")).click();
  try {
    assertTrue(driver.findElement(By.cssSelector("div.formErrorContent")).getText().matches("^exact:[\\s\\S]* This field is required$"));
  } catch (Error e) {
    verificationErrors.append(e.toString());
  }
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("fancybox-close")).click();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);


}
    Capabilities [{platform=XP, databaseEnabled=true, cssSelectorsEnabled=true, javascriptEnabled=true, acceptSslCerts=true, handlesAlerts=true, browserName=firefox, browserConnectionEnabled=true, nativeEvents=true, webStorageEnabled=true, rotatable=false, locationContextEnabled=true, applicationCacheEnabled=true, takesScreenshot=true, version=22.0}]

I dont want to change the version of selenium and browser.


public void testEmptydatabase() throws Exception {

    driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
      driver.findElement(By.linkText("Home")).click();
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
      driver.findElement(By.cssSelector("u")).click();
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
      driver.findElement(By.id("monitor")).click();
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
      driver.findElement(By.cssSelector("span.ui-icon.ui-icon-plus")).click();
      driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
   driver.findElement(By.cssSelector("#add_profileDetailTable > div.ui-pg-div")).click();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("profileName")).clear();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("profileName")).sendKeys("new");
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("profileDescription")).clear();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("profileDescription")).sendKeys("test");
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.name("createProfile")).click();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("serverName")).clear();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  **driver.findElement(By.id("serverName")).sendKeys("192.168.32.16");**
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.xpath("(//input[@name='monitors'])[11]")).click();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("nextStep")).click();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("userPassword")).clear();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);

  driver.findElement(By.id("userPassword")).sendKeys("root");
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.xpath("//button[@value='Establish Connection']")).click();
  try {
    assertTrue(driver.findElement(By.cssSelector("div.formErrorContent")).getText().matches("^exact:[\\s\\S]* This field is required$"));
  } catch (Error e) {
    verificationErrors.append(e.toString());
  }
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);
  driver.findElement(By.id("fancybox-close")).click();
  driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS);


}

请看一下代码。并建议怎么做。还有人建议我不要使用Thread.sleep,所以我使用了隐式等待,但我尝试了Thread.sleep,但它也不能正常工作。

它与Selenium或浏览器版本无关。请提供该元素的html代码片段,并说明您尝试了什么。请查看添加的代码。由于没有找到服务器名称,我从id中找到了服务器名称,即servername@ALL请帮助ASAPIf尝试
sendKeys()
到id为
servername
的元素对于上述html代码,它工作正常。您可以共享该URL吗?您将无法访问应用程序部署在我的本地计算机上的URL。