2015-02-20 3 views
1

Я столкнулся с этим видом поведения с IE selenium driver - я использую код TEST CASE, сгенерированный Selenium IDE, - в пределах Firefox отлично работает.Selenium IEdriver NoSuchElementException исключительно

driver.Navigate().GoToUrl(baseURL + "/RZR/1.5.85/ZobrazitReklamaceROB.aspx"); 
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_rbAIFO")).Click(); 
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_tbAIFO")).Clear(); 
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_tbAIFO")).SendKeys("pqrJrJxtt/qUvjhO8="); 
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_btnVyhledat")).Click(); 
driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_identifikaceROB_btnVyhledat")).Click(); 
//Actions action = new Actions(driver); 
//action.SendKeys(OpenQA.Selenium.Keys.Tab); 
//action.SendKeys(OpenQA.Selenium.Keys.Tab); 
//action.SendKeys(OpenQA.Selenium.Keys.Tab); 
//action.SendKeys(OpenQA.Selenium.Keys.Tab); 
//action.SendKeys(OpenQA.Selenium.Keys.Tab); 
//action.SendKeys(OpenQA.Selenium.Keys.Tab); 
//action.SendKeys(OpenQA.Selenium.Keys.Tab); 
//action.SendKeys(OpenQA.Selenium.Keys.Tab); 
//action.SendKeys(OpenQA.Selenium.Keys.Tab); 
//action.SendKeys(OpenQA.Selenium.Keys.Enter); 

driver.FindElement(By.Id("ctl00_ContentPlaceHolderMain_gvPrehled_ctl04_selectButton10168579135")).Click(); 

С IEDriver однако - если я запускаю этот код под VS2013

  1. В отладки с точки останова и происходит через шаг за шагом - он работает
  2. Если я позволяю тест идти, не наступая и контрольных точек затем NoSuchElementFindException будет произошло в

driver.FindElement (By.Id ("ctl00_ContentPlaceHolderMain_identifikaceROB_tb AIFO ")) Clear().

в случае

  1. Обычно это случилось - тест проходит к тому же каждый раз - однако иногда не с NoSuchElementFindException

Коллега дал мне совет, чтобы перейти к компонентам (TB в данном случае) с закладками ключей - до сих пор неудачно, но стараюсь так.

Использование последнего обновления IE, ZOOM 100%, чередование реестра в соответствии с веб-страницей selenium, режим защиты устанавливается одинаковым для всех зон.

Любая идея или такой же опыт?

Update:

Initialization:

[SetUp] 
public void SetupTest() 
{ 

    var options = new InternetExplorerOptions 
    { 
     IgnoreZoomLevel = true 
    }; 

    driver = new InternetExplorerDriver(".", options); 

    baseURL = "http://vm-kzr-dev/"; 
    verificationErrors = new StringBuilder(); 
} 
+0

Вы проверили 'настройки безопасности Zone'? – Saifur

+0

они установлены на минимальный уровень, если возможно –

+0

Все они должны быть проверены или сняты. НЕ ОБА. См. [This] (http://jimevansmusic.blogspot.com/2012/08/youre-doing-it-wrong-protected-mode-and.html) – Saifur

ответ

1

Вот проблема. Необходимо отключить собственные события IE.

InternetExplorerOptions options = new InternetExplorerOptions(); 
options.EnableNativeEvents = false; 

См this для понимания того, как родные события связаны с IEDriver.

Я также хотел бы предложить вам удалить избыточную ignoreZoomLevel и заменить, что с EnableNativeEvents

var options = new InternetExplorerOptions 
{ 
    EnableNativeEvents = false 
}; 
+0

И почему именно отключить собственные события исправить проблему, о которой сообщает OP? – Louis

+0

@Louis - это общая проблема с событием 'click()' IEDriver'.Прошли ли вы через ссылку, которую я предоставляю? Это, безусловно, объяснило бы лучше, чем я могу здесь. : D – Saifur

+0

Да, я прочитал эту статью некоторое время назад и перечитал ее перед отправкой моего предыдущего комментария. У меня есть пара тестовых наборов с (lemme check ...) более 800 и 600 шагов (один шаг может содержать несколько команд Selenium, многие из которых являются 'click()'), оба отлично работают с IE с собственными событиями включенный. На самом деле, если я * * отключу собственные события, они потерпят неудачу (во всех браузерах), потому что собственные события могут имитировать то, что не могут синтетические события. – Louis

1

IE, кажется медленнее, и если тест проходит с Firefox, то IE оказывает страницу медленнее и в этом случае вы можете использовать

WebDriverWait wait = new WebDriverWait(driver, 10); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.Id("ctl00_ContentPlaceHolderMain_gvPrehled_ctl04_selectButton10168579135"))); 
Смежные вопросы