2017-10-13 1 views
-2

J'automatise une application Web avec le pilote Web Selenium, au cours de laquelle il y a une situation, le conducteur doit passer à iframe pour interagir avec son élément. Je fais toutes les mesures possibles pour passer à iframe mais je reçoisNoSuchFrameException et ne pas pouvoir identifier l'élément

NoSuchFrameException: Aucun élément de cadre trouvé par nom ou l'identifiant IMW_PROC_MAIN.

Voici le code que j'ai essayé:

driver.switchTo().frame("IMW_PROC_MAIN"); 
pcw.txt_matterName(driver).sendKeys("TempApplication"); 

J'ai essayé aussi trouver nombre total de iframes page HTML en cours et passer par index. pour cela, je reçois une erreur pour la zone de texte comme

NoSuchElementException.

Partage de la capture d'écran de la source de la page. En raison de certaines restrictions, je ne partage pas le texte HTML cible. Je veux interagir avec l'élément ayant id=matterName. Comment je peux y arriver.

+0

Les votes ne me dérangent pas. mais les utilisateurs peuvent vouloir indiquer ce qui est faux/incomplet dans cette question avant de le voter. – MKay

Répondre

0

Vous pouvez essayer cette alternative

WebElement FrameID=driver.findElement(By.id("IMW_PROC_MAIN")); 
      driver.switchTo().frame(FrameID); 

S'il y a 2 cadres emboîtement avec l'autre: essayez cette

WebElement MAINFrameID=driver.findElement(By.id("GB_FRAME")); 
       driver.switchTo().frame(MAINFrameID); 
WebElement FrameID=driver.findElement(By.id("IMW_PROC_MAIN")); 
       driver.switchTo().frame(FrameID); 
// code for your operation 
+0

Oui, il passe à GB_FRAME mais ne parvient pas à trouver l'élément par id = IMW_PROC_MAIN. – MKay

0

Comme vous avez donné il y a une autre mise en surbrillance cadre appelé GB_FRAME. Vous devez d'abord basculer sur cette image, puis passer à l'image IMW_PROC_MAIN. C'est le cadre à l'intérieur du cadre. Le premier contrôle devrait passer à l'image externe et ensuite le contrôle passera à l'intérieur.

driver.switchTo().frame("GB_FRAME"); 
driver.switchTo().frame("IMW_PROC_MAIN"); 
pcw.txt_matterName(driver).sendKeys("TempApplication");