2016-08-03 15 views
2

Ich versuche, ein Element (ein Textfeld) mit Selenium Webdriver mit Java zu identifizieren. Aber es gibt mir die nicht möglich, Element Exception zu finden. Die ID des Elements ist unverändert. Hier ist der HTML-Code:Ausnahme im Thread "Haupt" org.openqa.selenium.NoSuchElementException: Element kann nicht gefunden werden

<div> 
    <table id="searchIdText"> 
     <tbody> 
      <tr id="searchIdText-inputRow"> 
       <td id="searchIdText-labelCell"><label 
        id="searchIdText-labelEl"> Search By Id <span 
         role="separator">:</span> 
       </label></td> 
       <td id="searchIdText-bodyEl"><input id="searchIdText-inputEl" 
        type="text" autocomplete="off" name="searchIdText-inputEl" size="1" 
        role="textbox" style="width: 100%; height: 20px;" /></td> 
      </tr> 
     </tbody> 
    </table> 
</div> 

Das Element, das ich will, ist das Textfeld mit der ID searchIdText-inputEl. Ich habe versucht:

driver.findElement(By.xpath(".//*[@id='searchIdText-inputEl']")); 

driver.findElement(By.name("searchIdText-inputEl"))` 

sowie:

driver.findElement(By.id("searchIdText-inputEl")); 

Aber keiner von ihnen arbeiten. Ich habe versucht, wartet und Thread.sleep auch. Keiner von ihnen arbeitet. Auch das Ändern des HTML-Codes ist hier nicht möglich. Alle anderen Vorschläge sind willkommen. Vielen Dank!

Das Java-Code-Snippet ist wie folgt. Als eine verzweifelte Maßnahme habe ich sowohl Explicit Wait als auch Thread.sleep zusammengefügt, nachdem beide das Ergebnis nicht einzeln angeben konnten. Aber es war immer noch nutzlos.

WebDriver driver = new FirefoxDriver(); 
WebElement element = null; 
WebDriverWait wait = new WebDriverWait(driver, 30); 
driver.get(url); 
Thread.sleep(60000); 
element = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath(".//*[@id='searchIdText-inputEl']")); 
element.sendKeys("ABC"); 
+0

Ist das Element sichtbar, sobald die Seite geladen wird? Können Sie Ihren aktuellen Java-Code posten, nur um ein wenig mehr Kontext zu geben? – Josh

+0

Bearbeitet und hinzugefügt das Java-Code-Snippet. –

+0

Danke, und können Sie sehen, die Seite geladen wird, ist das Element sichtbar? – Josh

Antwort

0

Es stellt sich heraus, da ein iFrame war, was verborgen war und irgendwie die Kontrolle wurde zu dieser iFrame auf Seite Last übertragen. Ich habe es umgeschaltet und jetzt funktioniert es gut.