2017-10-10 6 views
-1

J'utilise Selenium pour construire une automatisation de test où le html est dans un iFrame, j'ai pu trouver en ligne les lignes de code pour activer l'iFrame, cliquez sur un lien, et appuyez sur un bouton et ils travaillent lignes fines suivantes: de -voirSélénium iFrame texte d'entrée

driver.SwitchTo().Frame("06634000000BVL6"); 
driver.FindElement(By.LinkText("Loan Details R1")).Click(); 
driver.FindElement(By.XPath("//button[contains(.,'Edit')]")).Click(); 

je avais besoin d'entrer un texte dans une zone de texte dans ce iFrame, mais je ne pouvais pas gérer l'ID ou la classe, ci-dessous est le code HTML pour l'entrée:

Des pensées?

Merci pour votre aide

+0

Si vous ne parvenez pas à accéder à WebElement dans un cadre, vous n'êtes pas dans le cadre. Si vous publiez le code html pour Iframe, quelqu'un peut vous aider. vous devez changer le chemin, comment vous passez à l'image. SI vous voulez vérifier la météo, vous êtes dans le cadre ou non, vous essayez simplement d'imprimer la source de la page dans la console et de vérifier si votre boîte de texte est présente dans le code ou non. –

+0

Veuillez clarifier votre question. Je ne suis pas sûr pourquoi le code de travail est utile. Nous avons besoin de plus de description de ce qui ne fonctionne pas, montrer le code qui ne fonctionne pas et expliquer pourquoi cela ne fonctionne pas ou le message d'erreur. Vous référencez un IFRAME mais vous ne le montrez pas dans votre code HTML. Ajoutez les détails nécessaires pour résoudre le problème. – JeffC

+0

le HTML est trop grand pour le faire rentrer dans une boite de texte malheureusement – Sam

Répondre

0

Je ne peux pas encore de commentaire, ce sera donc une partie de réponse, une partie commentaire. En fonction de ce que vous avez posté, il semble que vous ne soyez pas dans le bon iFrame et que nous n'ayons pas assez de code sur la page pour savoir s'il y a un iframe supplémentaire.

Je voudrais également voir le code que vous utilisez pour écrire du texte sur le terrain, vous pouvez avoir un problème là-bas. Si ce n'est pas le cas et que le seul problème est le sélecteur, essayez ce qui suit. Allez chercher la version développeur de Firefox. Accédez à votre page Web dans Firefox. Inspectez l'élément où vous voulez écrire le texte. Une fois que vous êtes dans l'écran d'inspection, il y a une barre de chemin qui peut défiler à gauche et à droite en bas de l'écran. Vérifiez cela pour confirmer qu'il n'y a qu'un iframe que vous avez mentionné et que vous êtes dans le bon iframe. Si c'est le problème, vous devriez être bon à aller, vous êtes le code ci-dessus fonctionne pour passer d'une image à l'autre. Si vous êtes dans le bon iframe, essayez une méthode différente pour trouver l'élément pour la zone de texte. J'ai eu le plus de succès avec des éléments difficiles à trouver en utilisant le cssselector. Pour obtenir le cssselector de l'élément, faites un clic droit dessus, naviguez pour copier, puis cssselector. De là, votre code devrait ressembler à ceci (en utilisant C#):

driver.FindElement(By.CssSelector("INSERT CSS SELECTOR HERE")).SendKeys("Text"); 
0

Based on what you have posted, it looks like you may not be in the correct iframe

En plus de ce que dit Haendler: Vous pouvez vérifier cela facilement en utilisant le Selenium IDE: Record remplir la boîte d'entrée puis passez en revue le script enregistré.

Contient-il des instructions selectFrame avant les commandes click et type? Cela vous dira où se trouve la boîte de saisie et vous donnera de bons indices pour le code du webdriver.

Il existe le Selenium ide for Firefox, mais spécifiquement pour tester les cadres/iframes ce nouveau selenium ide enregistre plus précisément.

+0

Merci pour ton commentaire J'ai installé que rajouter sur chrome et l'ai essayé, voici le Testeur html, ce que j'essaye de faire ici c'est de mettre la valeur "mon texte est ici" bas – Sam

+0

selectFrame \t index = 1 \t clickAndWait \t // * [@ id = "ncSecondaryNavigation"]/nc-secondaire navigation/div/div/div [2]/NC- secondaire navigation item [3]/a/span \t cliquez sur \t // * [@ id = "j_id0: j_id2: j_id116: j_id117: j_id185"]/span/div [3]/bouton \t cliquez \t css = textarea.ng-pristine.ng-untouched.ng-valide .NG-scope.ng-empty.input-sm.form-control.nc-pristine.ng-valid-requis \t // Ce que je suis en train de réaliser est la ligne suivante // Type \t = textarea css .ng-untouched.ng-valide.ng-scope.input-sm.form-control.ng-valide-requis.ng-not-vide.ng-dirty.ng-valide-parse.nc-non-vierge \t Mon le texte est ici – Sam

+0

Est-ce que la replay * dans l'IDE * fonctionne? Basé sur cet enregistrement, le suivant devrait fonctionner dans webdriver (ça marche?) 'Driver.switchto(). Frame (1)' et ensuite 'driver.FindElement (By.CSS (" \t css = textarea.ng-untouched ... ")) .Cliquez sur();' puis sur [touche d'envoi] (https://stackoverflow.com/questions/16481418/how-to-type-in-textbox-using-selenium-webdriver-selenium-2-with-java) avec le texte. –