Сначала я создал код в Selenium IDE firefox addon, который очищает данные с сайта. Конечно, он работает правильно в IDE.Selenium C# - Не удалось найти элемент
Я хочу, чтобы очистить URL от этого:
<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
function, потому что driver
не смог найти элемент. Мне интересно, почему это происходит. Все, кажется, одно и то же. Есть ли у вас какие-либо советы?
Я думаю, что стоит сказал: содержание, которое я хочу, чтобы очистить генерируется PHP или JavaScript (Thats являются результатом поиска Google на «пример» страницы, которая не Google)
Ваш HTML образец не содержит 'div' s. Это намеренно? – Stuart
Существует '// div [@ class = 'gs-per-result-labels']' –
Так что XPath запрашивает XML, этот запрос '// div [@ class = 'gs-per-result-labels-labels']' будет найдите элементы 'div' с атрибутом' class' со значением '' gs-per-result-labels''. Он не будет выполнять обычный текстовый поиск тела HTML. – Stuart