0
起初,我在Selenium IDE firefox addon中創建了一個代碼,它從網站上抓取數據。當然,它在IDE中正常工作。Selenium C# - 無法找到元素
我想從這個刮網址:
<div class="gs-per-result-labels" url="http://example.com/foo/bar"></div>
爲HTML顯示如:
<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>
兩個命令是否正確執行和echo
是給權值。接下來,我將格式更改爲C#/NUnit/WebDriver
,並將代碼複製到Visual Studio 2015.我添加了FirefoxDriver
和IWebDriver
引用。這是代碼:
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");
}
我還添加了Sleep
,以確保當談到刮值的頁面完全加載。問題是我在FindElement
函數上出錯,因爲driver
找不到元素。我想知道爲什麼會發生這種情況。一切似乎都是一樣的。你有什麼建議嗎?
我認爲這是值得說:我要湊是由PHP或JavaScript生成的內容(那是「榜樣」頁面未被谷歌在谷歌搜索結果)
你的HTML樣本不含有任何'div'秒。那是故意的嗎? – Stuart
有'/ div [@ class ='gs-per-result-labels']' –
因此XPath查詢XML,查詢'// div [@ class ='gs-per-result-labels']'會使用''gs-per-result-labels''來查找具有'class'屬性的'div'元素。它不會對HTML主體進行純文本搜索。 – Stuart