Je suis actuellement en difficulté avec le sélénium pour sélectionner un élément par son nom de classe. Le site Web que j'utilise est la suivante:
<span> <label class="first_name_label form_label_text"></label> <div class="clear"></div> <div class="form-item icon"> <input value="" data-error="An error has occured." id="first_name" type="text" name="first_name" class="form_item is_required" placeholder="First Name"> <i style="color:rgba(70,75,106,0.5)" class="vs icon-user"></i> </div> <div class="form-item icon"> <input value="" data-error="An error has occured." id="last_name" type="text" name="last_name" class="form_item is_required" placeholder="Last Name"> <i style="color:rgba(70,75,106,0.5)" class="vs icon-user"></i> </div> <div class="clear"></div> </span>
3 Réponses :
Code corrigé: XPath de votre nom de classe était incorrect.
IWebElement search = driver.FindElement(By.Xpath("//*[@id='email']"));
Vous pouvez utiliser le nom de la classe pour trouver également l'élément, mais quel est le problème est que même classe peut être utilisé pour définir plusieurs éléments forts> dans le programme, donc lorsque vous trouvez l'élément par classe Il sera Mieux vaut avec XPATH comme étiquette avec la classe.
Voici le code p>
xpath = "// entrée [@ nom = 'passwd']"; p>
@ -> peut être utilisé pour obtenir n'importe quel paramètre à l'intérieur de la balise et l'utiliser selon vos besoins. P>
Cela vous aidera.
Contact Pour plus d'informations. P>
Si vous observerez le nom de la classe de l'élément, il s'agit du nom de la classe composée (avoir de l'espace entre). Et les noms de classe composés ne sont pas autorisés dans le sélénium. Dans ce cas, vous pouvez utiliser un autre localisateur comme CSS (avec nom de classe) ou XPath.
Vérifiez l'extrait de code suivant: P>
WebDriverManager.chromedriver().version("2.40").setup(); WebDriver driver= new ChromeDriver(); driver.manage().window().maximize(); driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS); driver.get("http://demo.guru99.com/test/login.html"); WebElementuserName=driver.findElement(By.cssSelector(".is_required.validate.account_input.form-control")); userName.sendKeys("Username"); WebElement password = driver.findElement(By.xpath("(//[@class='is_requiredvalidateaccount_input form-control'])[2]")); password.sendKeys("Password");
Vous ne pouvez pas utiliser de nom de classe composé pour localiser l'élément à l'aide de
classname code>.
HMM merci pour les commentaires. J'ai édité le post. Dans le deuxième exemple, je ne peux pas le sélectionner par ID non plus pour une raison quelconque. Je suis confus.
Il devrait fonctionner avec
ID code> en utilisant une attente appropriée.
Driver.Manage (). Télèves (). Implicitwait = Timespan.fromseconds (10); Code> En attente de 10 secondes et il n'est toujours pas disponible pour une raison quelconque.
Essayez d'utiliser
webDriverwait code>