2016-05-12 6 views
0

Ich habe das Skript mit Selen mit Java entwickelt und sehe das Problem so, dass der Wert im Rahmen nicht eingegeben werden kann.Webdriver: Wert kann nicht in verschachteltem iframe, frameset und frame eingegeben werden

Bitte helfen Sie mir dabei.

HTML snippet: 
 

 
<html> 
 
<head> 
 
<frameset> 
 
<frame name ='test'...> 
 
<html> 
 
<head> 
 
<body> 
 
<form> 
 
<div> 
 
    <iframe name ='test1'..> 
 
\t <html> 
 
\t <head> 
 
\t  <frameset name='MainContainer'..> 
 
\t \t <frame name ='General' ..> 
 
\t \t \t <div> .....</div> 
 
\t \t <frame name ='GlobalOptions' ..> 
 
\t \t \t <input name="scr" type="textbox" size="9" maxLength="8"/> 
 
\t \t <frameset name='Container'..> 
 
\t \t \t <frame name ='Gen' ..> 
 
\t \t \t <div> .....</div> 
 
\t \t \t <frame name ='Glo' ..> 
 
\t \t \t <div> .....</div> 
 
</div> 
 
</form> 
 
</body> 
 
... 
 
</html>

+0

Unten ist der Code driver.switchTo(). Frame (driver.findElement (By.name ("test")))); driver.switchTo() .frame (driver.findElement (By.name ("test1"))); driver.switchTo() .frame (driver.findElement (By.name ("GlobalOptions")))); driver.findElement (By.name ("scr")). SendKeys ("CART"); – VVV

+0

Bitte stellen Sie Ihre Code-Schnipsel in Frage, denn in Kommentaren sieht es unlesbar – Batiaev

Antwort

0

Sie müssen mit dem Rahmen navigieren.

driver.switchTo().frame(driver.findElement(By.name("test1"))); 
driver.switchTo().frame(driver.findElement(By.name("MainContainer"))); 
driver.switchTo().frame(driver.findElement(By.name("General"))); 
driver.switchTo().frame(driver.findElement(By.name("GlobalOptions"))); 
driver.findElement(By.name("scr")).sendKeys("CART"); 
+0

es funktioniert nicht. Für die zweite Zeile existiert keine solche Frame-Ausnahme. – VVV

+0

driver.switchTo(). Frame (driver.findElement (By.name ("test1"))); driver.switchTo() .frame (driver.findElement (By.name ("Allgemein"))); driver.switchTo() .frame (driver.findElement (By.name ("GlobalOptions")))); driver.findElement (By.name ("scr")). SendKeys ("CART"); –

+0

Wieder kein Glück, es funktioniert nicht. – VVV

1

Sie haben solch eine komplexe Rahmenstruktur. Ich denke, es ist besser, JavascriptExecutor zu verwenden. Versuchen Sie diesen Code:

((JavascriptExecutor) driver).executeScript("document.getElementsByName('scr').item(0).value = 'new text';"); 
+0

Exception ausgelöst Ausnahme im Thread "Haupt" org.openqa.selenium.WebDriverException: JavaScript-Fehler (Warnung: Der Server hat keine Stacktrace-Informationen zur Verfügung gestellt) – VVV

0

Verwendung den Code unten in dem Rahmen zu wechseln:

driver.switchTo().frame("ur frame name"); 
+0

es funktioniert nicht wegen mehrerer Frames. – VVV

+0

eigentlich, zuerst müssen Sie zu übergeordneten Rahmen wechseln und dann zu untergeordneten Rahmen wechseln ... danach sendkeys() ausführen. – noor

0

Ich habe Lösung nach langer Zeit verbrachte. Wir müssen von einem Frame zu einem anderen Frame wechseln, etwa wenn ich einen Wert in den Rahmen General eingeben möchte, dann script wie driver.switchTo(). Frame ("test"). SwitchTo(). Frame ("test1"). SwitchTo() .frame ("Allgemein");

Verwandte Themen