Zuerst habe ich einen Code in Selenium IDE firefox Addon erstellt, die Daten von der Website schabt. Natürlich funktioniert es in IDE richtig.Selen C# - Element nicht gefunden
Ich möchte von dieser URL kratzen:
<div class="gs-per-result-labels" url="http://example.com/foo/bar"></div>
Als HTML wird wie folgt angezeigt:
<tr>
<td>open</td>
<td>http://example.com</td>
<td></td>
</tr>
<tr>
<td>storeAttribute</td>
<td>//div[@class='gs-per-result-labels']@url</td>
<td>myValue</td>
</tr>
<tr>
<td>echo</td>
<td>${myValue}</td>
<td></td>
</tr>
Beide Befehl richtig ausgeführt werden und echo
wird richtigen Wert zu geben. Als nächstes änderte ich das Format in C#/NUnit/WebDriver
und ich kopierte Code nach Visual Studio 2015. Ich fügte FirefoxDriver
und IWebDriver
Referenzen hinzu. Das ist der Code:
private static IWebDriver driver;
static void Main(string[] args)
{
driver = new FirefoxDriver();
driver.Navigate().GoToUrl("http://example.com");
Thread.Sleep(10000);
string myValue = driver.FindElement(By.XPath("//div[@class='gs-per-result-labels']")).GetAttribute("url");
}
Ich habe auch Sleep
sicher sein, dass die Seite vollständig geladen ist, wenn es um Schaben Wert kommt. Die Sache ist, ich bekomme Fehler auf FindElement
Funktion, weil driver
Element nicht finden konnte. Ich frage mich, warum das passiert. Alles scheint gleich zu sein. Hast du irgendwelche Tipps?
Ich denke, es lohnt sich zu sagte: Der Inhalt, die ich kratzen wollen wird von PHP oder Javascript erzeugt (das ist sind Google Suchergebnis auf „Beispiel“ Seite, die Google ist nicht)
Ihre HTML-Probe enthält keine 'div' s. Ist das beabsichtigt? – Stuart
Es gibt '// div [@ class = 'gs-per-result-labels']' –
Also XPath fragt XML ab, das fragt '// div [@ class = 'gs-per-result-labels']' ab Suchen Sie nach "div" -Elementen mit einem "class" -Attribut mit dem Wert "gs-per-result-labels". Es wird keine Nur-Text-Suche des HTML-Bodys durchgeführt. – Stuart