Meilleur auteur de réponses
identification d'element IE

Question
-
Réponses
-
Bonsoir,
Je vous ai fait un petite exemple avec la logique que vous voulez mettre en place. Dans le code ci-dessous, on charge le document HTML à partir d'une chaîne de caractères mais vous pouvez très bien charger des fichiers à partir de leurs chemins d'accès avec la méthode Load de la classe HtmlDocument dans l'espace de nom HtmlAgilityPack. N'oubliez pas de référencer la librairie HtmlAgilityPack.dll dans votre projet.
using System; using HtmlAgilityPack; namespace ConsoleApp { class Program { static void Main(string[] args) { // Load the HTML document HtmlDocument htmlDocument = new HtmlDocument(); htmlDocument.LoadHtml("<html><head></head><body><p>aaaaaaaaa<div id='1'>cccc<p>ccccc</div></body></html>"); // Look for the HTML element // Case 1: The html element exists HtmlNode node1 = htmlDocument.DocumentNode.SelectSingleNode("//div[@id='1']"); Console.WriteLine(node1 != null); // Case 2: The html element doesn't exist HtmlNode node2 = htmlDocument.DocumentNode.SelectSingleNode("//div[@id='2']"); Console.WriteLine(node2 != null); Console.ReadKey(); } } }
Vous pouvez aussi télécharger le code source sur codeplex, vous avez pas mal d'exemples dedans.
Cordialement,
aelassas.free.fr- Modifié Link.frEditor lundi 19 décembre 2011 21:01 Modification mineure
- Proposé comme réponse Ciprian Duduiala mardi 20 décembre 2011 08:12
- Marqué comme réponse Ciprian Duduiala vendredi 23 décembre 2011 16:30
-
htmlDocument.LoadHtml("http://www.google.tn/");
Non, il faut utiliser la méthode Load de la classe HtmlDocument dans l'espace de nom HtmlAgilityPack comme j'ai précisé dans la réponse précédente:
htmlDocument.Load("http://www.google.tn/");
aelassas.free.fr- Marqué comme réponse Ciprian Duduiala vendredi 23 décembre 2011 16:30
-
Bonsoir,
Voici un exemple dans lequel j'affiche toutes les URL de la recherche de MSDN dans Google.
using System; using System.Linq; using HtmlAgilityPack; namespace ConsoleApp { class Program { static void Main(string[] args) { // Load the HTML document HtmlWeb htmlWeb = new HtmlWeb(); HtmlDocument doc = htmlWeb.Load("http://www.google.fr/search?q=msdn"); // Select the elements HtmlNodeCollection noAltElements = doc.DocumentNode.SelectNodes(@"//a[@href]"); // Display the URLs if (noAltElements != null) { foreach (string url in noAltElements. Select(e => e.Attributes["href"].Value). Where(url => url.StartsWith("http://") || url.StartsWith("https://"))) { Console.WriteLine(url); } } Console.ReadKey(); } } }
Cordialement,
aelassas.free.fr- Marqué comme réponse Ciprian Duduiala vendredi 23 décembre 2011 16:30
Toutes les réponses
-
- Proposé comme réponse Ciprian Duduiala lundi 19 décembre 2011 12:07
-
-
Bonjour,
Si c'est du HTML, vous devez passer par les Regex.
Si c'est du XHTML, vous pouver le faire avec Linq to XML ou XmlDoxument.
Cordialement,
aelassas.free.fr -
ok merci .
j'ai voulu essayer avec execScript :
public void setPage(mshtml.HTMLWindow2Class JSFile)
{
win = JSFile;
}
public void scriptPrint()
{
win.execScript("report_back('Printing complete!')", "JScript");
}il m'affiche l'erreur suivante:
Error 1 Interop type 'mshtml.HTMLWindow2Class' cannot be embedded. Use the applicable interface instead.
-
-
Bonjour,
Vous aurez toutes les informations qu'il faut dans la documentation qui est téléchargeable sur codeplex: http://htmlagilitypack.codeplex.com/releases/view/44954
Vous pourriez rencontrez un problème lors de l'ouverture du fichier de documentation *.chm si vous avez un OS Vista ou Seven. Voici la solution.
Cordialement,
aelassas.free.fr -
Bonsoir,
Je vous ai fait un petite exemple avec la logique que vous voulez mettre en place. Dans le code ci-dessous, on charge le document HTML à partir d'une chaîne de caractères mais vous pouvez très bien charger des fichiers à partir de leurs chemins d'accès avec la méthode Load de la classe HtmlDocument dans l'espace de nom HtmlAgilityPack. N'oubliez pas de référencer la librairie HtmlAgilityPack.dll dans votre projet.
using System; using HtmlAgilityPack; namespace ConsoleApp { class Program { static void Main(string[] args) { // Load the HTML document HtmlDocument htmlDocument = new HtmlDocument(); htmlDocument.LoadHtml("<html><head></head><body><p>aaaaaaaaa<div id='1'>cccc<p>ccccc</div></body></html>"); // Look for the HTML element // Case 1: The html element exists HtmlNode node1 = htmlDocument.DocumentNode.SelectSingleNode("//div[@id='1']"); Console.WriteLine(node1 != null); // Case 2: The html element doesn't exist HtmlNode node2 = htmlDocument.DocumentNode.SelectSingleNode("//div[@id='2']"); Console.WriteLine(node2 != null); Console.ReadKey(); } } }
Vous pouvez aussi télécharger le code source sur codeplex, vous avez pas mal d'exemples dedans.
Cordialement,
aelassas.free.fr- Modifié Link.frEditor lundi 19 décembre 2011 21:01 Modification mineure
- Proposé comme réponse Ciprian Duduiala mardi 20 décembre 2011 08:12
- Marqué comme réponse Ciprian Duduiala vendredi 23 décembre 2011 16:30
-
-
bonjour ,
merci pour la réponse . j'ai essayé de tester tous les exmples possible sur htmlDocument.LoadHtml("http://www.google.tn/");
mais il ne parvient pas à m'identifier un simple bouton qui a un attribut name='btnK'.
en plus j'ai l'impression qu'il ne peut pas identidier un element par son xpath :
please help
-
htmlDocument.LoadHtml("http://www.google.tn/");
Non, il faut utiliser la méthode Load de la classe HtmlDocument dans l'espace de nom HtmlAgilityPack comme j'ai précisé dans la réponse précédente:
htmlDocument.Load("http://www.google.tn/");
aelassas.free.fr- Marqué comme réponse Ciprian Duduiala vendredi 23 décembre 2011 16:30
-
voici ce que j'ai écrit:
HtmlAgilityPack.HtmlWeb web = new HtmlWeb();
HtmlAgilityPack.HtmlDocument doc = web.Load(@URL.Text);
var NoAltElements = doc.DocumentNode.SelectNodes(@"//div[3]/center/input");if (NoAltElements != null)
{foreach (HtmlNode HN in NoAltElements)
{
MessageBox.Show(HN.XPath + "[" + HN.Attributes["name"].Value + "]");
j++;
}
}sachant que //div[3]/center/input c'est l'xpath du bonton "recherche google" que jé eu par F1 sur IE.
-
Bonsoir,
Voici un exemple dans lequel j'affiche toutes les URL de la recherche de MSDN dans Google.
using System; using System.Linq; using HtmlAgilityPack; namespace ConsoleApp { class Program { static void Main(string[] args) { // Load the HTML document HtmlWeb htmlWeb = new HtmlWeb(); HtmlDocument doc = htmlWeb.Load("http://www.google.fr/search?q=msdn"); // Select the elements HtmlNodeCollection noAltElements = doc.DocumentNode.SelectNodes(@"//a[@href]"); // Display the URLs if (noAltElements != null) { foreach (string url in noAltElements. Select(e => e.Attributes["href"].Value). Where(url => url.StartsWith("http://") || url.StartsWith("https://"))) { Console.WriteLine(url); } } Console.ReadKey(); } } }
Cordialement,
aelassas.free.fr- Marqué comme réponse Ciprian Duduiala vendredi 23 décembre 2011 16:30
-
cette solution me fait apparaitre cette erreur :
Error 1 'HtmlAgilityPack.HtmlNodeCollection' does not contain a definition for 'Select' and no extension method 'Select' accepting a first argument of type 'HtmlAgilityPack.HtmlNodeCollection' could be found (are you missing a using directive or an assembly reference?)
-
-
-
-