 
	
Как решить проблему с падением тестов в Selenium 2.4 под WD
			
				
					
						
					
					#1
					 
					
				
				
				
					
				
			
				
			
			
			Отправлено 24 августа 2011 - 07:09
			
				
					
						
					
					#2
					 
					
				
				
				
					
				
			
				
			
			
			Отправлено 24 августа 2011 - 08:13
У меня такая же проблема. Мои поиски показали, что надо смотреть в сторону настройки Security для IE или вообще его настройки. Но решить проблему не удалось :(
			
				
					
						
					
					#3
					 
					
				
				
				
					
				
			
				
			
			
			Отправлено 24 августа 2011 - 08:17
			
				
					
						
					
					#4
					 
					
				
				
				
					
				
			
				
			
			
			Отправлено 24 августа 2011 - 08:21
RC таких проблем не имеет, потому что при выполнении каждой команды он всегда ищет элемент заново.
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
			
				
					
						
					
					#5
					 
					
				
				
				
					
				
			
				
			
			
			Отправлено 24 августа 2011 - 08:46
Конечно WD перестаёт видеть элемент, после того, как страница перегрузилась. Потому что DOM-дерево в браузере перестроилось. Поменялась страница -- делайте findElement заново.
RC таких проблем не имеет, потому что при выполнении каждой команды он всегда ищет элемент заново.
В том то и проблема, что эта ошибка появляется даже когда страница не перегружается. Вот пример метода (пытаемся селектнуть пока не селектнем :) ), в котором происходит падение
public boolean setSelected(String locatorName) {
		WebElement element = findElement(locatorName);
		
		if (driver.getClass().equals(InternetExplorerDriver.class)) {
			do {
				//sbrowser.wait(10000);
				element.sendKeys(Keys.SPACE);
				ATGLogger.info("Keys.SPACE");
				element = findElement(locatorName);
				if(element==null){
					break;
				}
/*706*/			} while (!element.isSelected() && element.isEnabled());
		} else {
			do {
				element.click();
			} while (!element.isSelected() && element.isEnabled());
		}
		return true;
	}	
и сам стэк
Driver info: driver.version: BrowserWebDriver
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:131)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:105)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:407)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:213)
at org.openqa.selenium.remote.RemoteWebElement.isEnabled(RemoteWebElement.java:113)
at com.epam.tc.fitnesse.browser.BrowserWebDriver.setSelected(BrowserWebDriver.java:706)
не могу понять почему в 706 строке вызывается RemoteWebElement.isEnabled если сам element - org.openqa.selenium.WebElement :(
Буду признателен за помошь
			
				
					
						
					
					#6
					 
					
				
				
				
					
				
			
				
			
			
			Отправлено 24 августа 2011 - 10:46
Рекомендация:
Please check your Protected Mode settings (Tools > Internet Options > Security tab). The value should be set to the same value (either on or off) for all zones.
Только вот я не могу у себя в IE8 найти этот Protected Mode :) Ее как-нибудь могут убирать админы или в IE8 ее нет?...
			
				
					
						
					
					#7
					 
					
				
				
				
					
				
			
				
			
			
			Отправлено 24 августа 2011 - 11:08
Только вот я не могу у себя в IE8 найти этот Protected Mode :) Ее как-нибудь могут убирать админы или в IE8 ее нет?...
Protected Mode недоступен для IE на XP, если верить поисковику. Vista или выше нужна операционка..
			
				
					
						
					
					#8
					 
					
				
				
				
					
				
			
				
			
			
			Отправлено 24 августа 2011 - 11:48
Что касается конкретно выпадающих списков, лучше для работы с ними использовать специальный класс org.openqa.selenium.support.ui.Select:
Select selection = new Select(driver.findElement(By.name("my_select")));
    selection.selectByIndex(1);
    selection.selectByIndex(2);
					
					Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
			
				
					
						
					
					#9
					 
					
				
				
				
					
				
			
				
			
			
			Отправлено 29 августа 2011 - 08:47
			
				
					
						
					
					#10
					 
					
				
				
				
					
				
			
				
			
			
			Отправлено 29 августа 2011 - 12:56
Надеюсь, это шутка? У WebDriver нет метода waitForPageToLoad.Я все разрезолвив добавив waitForPageToLoad и после него заново findElement
Если Вам нужно, чтобы метод findElement просто ждал появления элемента, используйте имплицитные ожидания:
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium
			
				
					
						
					
					#11
					 
					
				
				
				
					
				
			
				
			
			
			Отправлено 30 августа 2011 - 11:43
Не путайте "Unable to find element" и "Element is no longer valid" -- второе означает, что элемент был, но после этого DOM перестроился и теперь того элемента больше нет. DOM может перестроиться и не только при загрузке новой страницы. Может быть у вас динамическое меню.
Что касается конкретно выпадающих списков, лучше для работы с ними использовать специальный класс org.openqa.selenium.support.ui.Select:Select selection = new Select(driver.findElement(By.name("my_select"))); selection.selectByIndex(1); selection.selectByIndex(2);
Все-таки я продолжаю настаивать, что ,возможно, проблема именно во второй части сообщения об ошибке: WARNING: The server did not provide any stacktrace information. Если это не так, то мне интересно, почему у меня не работает код из документации на WebDriver: пример, одифицированный под IE и даже с ожиданием.
  @Test
  public void testUntitled() throws Exception {
    WebDriver driver = new InternetExplorerDriver();
    driver.get("http://www.google.ru");
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    
    WebElement element = driver.findElement(By.name("q"));
    element.sendKeys("Cheese!");
    element.submit();
    System.out.println("Page title is: " + driver.getTitle());
    
    (new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
        public Boolean apply(WebDriver d) {
            return d.getTitle().toLowerCase().startsWith("cheese!");
        }
    });
    System.out.println("Page title is: " + driver.getTitle());
    
    driver.quit();
  }Unable to find element with css selector == q (WARNING: The server did not provide any stacktrace information)
For documentation on this error, please visit: http://seleniumhq.or...ch_element.html
Build info: version: '2.4.0', revision: '13337', time: '2011-08-12 09:58:05'
System info: os.name: 'Windows XP', os.arch: 'x86', os.version: '5.1', java.version: '1.6.0_25'
			
				
					
						
					
					#12
					 
					
				
				
				
					
				
			
				
			
			
			Отправлено 30 августа 2011 - 13:15
Надеюсь, это шутка? У WebDriver нет метода waitForPageToLoad.
Я все разрезолвив добавив waitForPageToLoad и после него заново findElement
Если Вам нужно, чтобы метод findElement просто ждал появления элемента, используйте имплицитные ожидания:driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
и переопределил и использовал com.thoughtworks.selenium.Selenium.waitForPageToLoad(String arg0)
в нем.
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных

 
			
			 
				
				
				
 
				
				
				

