web-dev-qa-db-fra.com

Obtenez le texte visible de la page

Comment puis-je obtenir la partie texte visible d'une page Web avec Selenium Webdriver sans les balises HTML?

J'ai besoin de quelque chose d'équivalent à la fonction HtmlPage.asText () de Htmlunit.

Il ne suffit pas de prendre le texte avec la fonction WebDriver.getSource et de l'analyser avec jsoup car il pourrait y avoir dans la page des éléments cachés (par CSS externe) qui ne m'intéressent pas.

32
David Michael Gang

Faire By.tagName("body") (ou un autre sélecteur pour sélectionner l'élément supérieur), puis effectuer getText() sur cet élément renverra tout le texte visible.

37
Nathan Merrill

Je peux vous aider avec C # Selenium.

En l'utilisant, vous pouvez sélectionner tout le texte de cette page particulière et l'enregistrer dans un fichier texte à votre emplacement préféré.

Assurez-vous que vous utilisez ce genre de choses:

using System.IO;
using System.Text;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;

Après avoir atteint la page particulière, essayez d'utiliser ce code.

IWebElement body = driver.FindElement(By.TagName("body"));
var result = driver.FindElement(By.TagName("body")).Text;

// Folder location
var dir = @"C:Textfile" + DateTime.Now.ToShortDateString();

// If the folder doesn't exist, create it
if (!Directory.Exists(dir))
Directory.CreateDirectory(dir);

// Creates a file copiedtext.txt with all the contents on the page.
File.AppendAllText(Path.Combine(dir, "Copiedtext.txt"), result);
11
Anuraj S.L

Je ne sais pas quel langage vous utilisez, mais en C # l'objet IWebElement a une méthode .Text. Cette méthode affiche tout le texte affiché entre les balises d'ouverture et de fermeture de l'élément.

Je créerais un IWebElement en utilisant XPath pour saisir la page entière. En d'autres termes, vous saisissez l'élément de corps et regardez le texte qu'il contient.

string pageText = driver.FindElement(By.XPath("//html/body/")).Text;

Si le code ci-dessus ne fonctionne pas pour Selenium, utilisez ceci:

string yourtext= driver.findElement(By.tagName("body")).getText();
6
Brantley Blanchard