2013-05-21 4 views
0

Я тестирую сайт. Просто попробуйте поместить текст в поле ввода (рядом с URL-адресом сайта :). Я использую селен. Исключение моего кода. Пожалуйста, скажи мне почему?Страница загружается, а объект не найден

IWebDriver driver = new FirefoxDriver(); 
try 
{ 
    driver.Navigate().GoToUrl("http://www.w-global.com/index.php/tools-gadgets/online-sitemap-generator"); 
    IWebElement url_parse = driver.FindElement(By.Name("inputurl")); 
    url_parse.SendKeys("http://test.com"); 
} 
catch (Exception ee) 
{ 
    String s = ee.ToString(); 
} 
finally 
{ 
    driver.Quit(); 
} 

Ошибка:

OpenQA.Selenium.NoSuchElementException: Unable to locate element: {\"method\":\"name\",\"selector\":\"inputurl\"}\r\n in OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse) in c:\Projects\WebDriver\trunk\dotnet\src\WebDriver\Remote\RemoteWebDriver.cs...

+0

Невозможно найти элемент, как говорится в сообщении об ошибке. Что еще вы ожидаете от нас? – Servy

+0

Как это сделать, что этот код работает ?. В конце концов, этот элемент на 100% существует в HTML-коде. –

ответ

2

Изменение IWebElement url_parse = driver.FindElement(By.TagName("inputurl")); в IWebElement url_parse = driver.FindElement(By.Name("inputurl"));

UPDATE

Только что заметил, что элемент находится внутри iframe.

Вам нужно переключиться на него, прежде чем пытаться найти элемент.

driver.SwitchTo().Frame("c-analyzer"); #and then 
IWebElement url_parse = driver.FindElement(By.Name("inputurl")); 
+0

№ (By.Name ("inputurl")) выбросить ту же ошибку: OpenQA.Selenium.NoSuchElementException: не удается найти элемент : {\ "method \": \ "name \", \ "selector \": \ "inputurl \"} \ r \ n в OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError (Response errorResponse) в c: \\ Projects \\ WebDriver \\ trunk \\ dotnet \\ src \\ WebDriver \\ Удаленный \\ RemoteWebDriver.cs –

+0

сделал редактирование. был iframe, который вам нужно было переключиться на – Amey

+0

Это работает! Спасибо! –

0

На самом деле, ваш inputurl от IWebElement url_parse = driver.FindElement(By.TagName("inputurl")); неправильно, потому что нет inputurl тега в исходном HTML.

Что я могу предложить?

Попробуйте использовать этот селектор вместо вашего

IWebElement url_parse = driver.findElement(By.cssSelector("div.mfid-v3 input")); 

я надеюсь, что это то, что вклад, который вы ищете.

Plus, ясно это, прежде чем писать значения Потому что ваш код будет делать это на вход:.

http://http://test.com 

Так что не забудьте url_parse.clear();

Скажи мне, что случилось =)

+0

Ваш вариант также не работает. IWebElement url_parse = driver.FindElement (By.CssSelector ("div.mfid-v3 input")); Ошибка броска: OpenQA.Selenium.NoSuchElementException: Не удается найти элемент: {\ "method \": \ "css selector \", \ "selector \": \ "div.mfid-v3 input \"} \ r \ n –

+0

@JonMaximys Хорошо, вы пытались использовать 'wait'? Взгляните [здесь] (http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp) – e1che

Смежные вопросы