Trouver des éléments à l'intérieur des formulaires et de l'iframe à l'aide de Java et Selenium WebDriver
Je suis en train d'essayer d'accéder à des éléments qui sont présents dans <form> <iFrame> <form> elements </form> </iFrame> </form>
.
Pourriez-vous m'aider sur l'accès à ces 'éléments', je travaille avec Selenium Webdriver et JAVA?
Problème Rencontré: en Mesure d'atteindre la page de destination (où les éléments ci-dessus sont présents), mais ces éléments ne sont pas reconnus avec mon code.
Vue d'ensemble de la structure XML:
<body>
<form action="https://abcd/efgh/" name="outerForm" method="post" target="iFrameTitle">
<iframe width="700" height="600" src="" title="Frame for Java Test" name="iFrameTitle" scrolling="auto" frameborder="0">
<form id="innerFormID" name="innerForm" action="/xxx/xxxx/yyyy/zzzz/" method="post" autocomplete="off">
<fieldset id="ncDetailsInner">
<div id="element1">
<label for="label1">
<abbr title="Required field">*</abbr></label>
<input name="label2" type="text" maxlength="30" id="cardHolder" value="" >
</div>
<div id="element2">
<label for="label3">Label3 <abbr title="Required field">*</abbr></label>
<div id="element3">
<label for="label4">Label4<abbr title="Required field">*</abbr></label>
<input id="label5" name="labelname5" type="text" maxlength="19" value="">
</div>
<div id="element4">
<label for="label6">Label6</label>
<input id="label7" name="labelname7" type="text" size="2" maxlength="2" value="" class="text disabled" disabled="">
</div>
</div>
</fieldset>
</form>
</iframe>
</form>
</body>
Code Extrait:
WebDriverWait wait_iframe = new WebDriverWait(driver, 20000);
wait_iframe.until(ExpectedConditions.visibilityOfElementLocated((By.id("element2"))));
calling_function(sh1.getCell(col + 10, row).getContents(),
sh1.getCell(col + 11, row).getContents(),
sh1.getCell(col + 12, row).getContents(),
sh1.getCell(col + 14, row).getContents());
public static void called_funciton(String string1, String string2,
String string3, String string4) {
driver.findElement(By.name("Element1 Name")).sendKeys(string1);
driver.findElement(By.id("Element2 ID")).sendKeys(string2);
driver.findElement(By.id("Element3 ID")).sendKeys(string3);
driver.findElement(By.id("Element4 ID")).sendKeys(string4);
driver.findElement(By.name("submitButton")).click();
}
Ne laissez-moi savoir si besoin de plus amples détails!
- Double Possible de Comment basculer entre les images en Selenium WebDriver à l'aide de Java
Vous devez vous connecter pour publier un commentaire.
Avant vous, essayez de rechercher les éléments à l'intérieur de l'iframe, vous aurez pour passer le Sélénium se concentrer à l'iframe.
Essayer cela avant de rechercher les éléments à l'intérieur de l'iframe:
public static void called_funciton(String string1, String string2, String string3, String string4) { driver.switchTo().frame(driver.findElement(By.name("iFrameTitle"))); driver.findElement(By.name("Element1 Name")).sendKeys(string1); driver.findElement(By.id("Element2 ID")).sendKeys(string2); driver.findElement(By.id("Element3 ID")).sendKeys(string3); driver.findElement(By.id("Element4 ID")).sendKeys(string4); driver.findElement(By.name("submitButton")).click(); }
WebDriverWait wait_iframe
avant de faire quoi que ce soit d'autre.Exception in thread "main" java.lang.NullPointerException at roll_forward_test.account_creation.thistle_home(xyz_creation.java:680) at roll_forward_test.account_creation.main(xyz_creation.java:463)
la ligne (xyz_creation.java:680) se réfère àdriver.findElement(By.name("Element1 Name")).sendKeys(string1);
sur la fonction appelée et la ligne (xyz_creation.java:463) fait référence à la fonction appelante.calling_function(S1, S2, S3, S4);
s'il vous plaît conseils!Lors de l'utilisation d'une iframe, vous devrez d'abord passer à l'iframe, avant de sélectionner les éléments de cette iframe
Vous pouvez le faire en utilisant:
Dans le cas où si votre frameId est dynamique, et vous avez seulement une iframe, vous pouvez utiliser quelque chose comme:
switchTo().defaultContent()
je suppose que c'est comment vous annulez la sélection de l'image, après que votre travail est fait.Sur Sélénium >= 3.41 (C#) la droite la syntaxe est: