1
votes

Selenium, comment copier quelques mots toujours différents?

J'essaye de copier automatiquement un nom hors du navigateur Web, mais le nom change donc je ne sais pas comment le copier.

J'ai essayé de le double-cliquer ou de le "ctrl + c" mais ce n'est pas le cas ne fonctionne pas.

WebDriver driver = new ChromeDriver();

    driver.get("https://realnamecreator.alexjonas.de/?l=de#");
    driver.findElement(By.linkText("[+] Filter-Optionen")).click();
    driver.findElement(By.id("gender")).click();
    new Select(driver.findElement(By.id("gender"))).selectByVisibleText("w");
    driver.findElement(By.id("gender")).click();
    driver.findElement(By.id("button")).click();

et après cela, je veux copier le nom dans mon programme. Alors je dirais String text = driver ...


2 commentaires

pouvez-vous cisailler le HTML de l'élément qui contient le nom?


Je ne suis pas sûr mais l'id = "realname" et son h1


3 Réponses :


3
votes

Vous devez d'abord récupérer l'élément, puis appeler la méthode getText documentée ici :

driver.findElement(By.id("realname")).getText()

J'espère que cela vous aidera.


2 commentaires

Merci Omg, j'ai déjà essayé cela, mais après votre commentaire, j'ai eu l'idée de laisser le fil dormir pour qu'il puisse se charger. Mon problème était que j'avais copié quelque chose qui était là quelques millisecondes après. Merci! :)


@MuhammedDemir il n'est pas recommandé d'utiliser le thread sleep ... utilisez WebDriverWait



1
votes

Vous ne devez pas utiliser thread-sleep ... utilisez WebDriverWait:

String text = driver.findElement(By.id("realname")).getText()

Ensuite, utilisez getText():

WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("realname")));


0 commentaires

0
votes

Le lien que vous avez partagé contient l'élément avec l'ID realname avant de générer et d'afficher le nom.
Donc, attendre la visibilité de l'élément avec l'id realname ne vous donnerait pas le résultat attendu.

Vous devez attendre l'invisibilité de l'image qui apparaît lors du chargement de la page mais qui ne s'affiche pas lorsque le nom est affiché.

Essayez ceci,

WebDriverWait wait = new WebDriverWait(driver, 20);
wait.until(ExpectedConditions.invisibilityOfElementLocated(By.cssSelector("#realname > a")));
String text = driver.findElement(By.id("realname")).getText();


0 commentaires