2015-10-05 3 views
0

У меня возникла следующая проблема: после загрузки логина система загружает основную страницу, как это делает 5 секунд, поэтому после этого сценарий должен ввести более 3 полей и выполнить вкладку, чтобы получить дополнительную информацию, но дело в том, что иногда работает, а иногда нет, по 5 шансов, только один работал, я не знаю, если что-то о времени, чтобы получить все поля или что-то в этом роде, я использую IE 9, потому что приложение работает только IEкод, иногда работает несколько раз. разные сообщения об ошибках

Here's код: `

System.setProperty("webdriver.ie.driver","C:\\Apps\\eclipse\\IEDriverServer.ex; 
WebDriver driver = new InternetExplorerDriver();  
driver.get("http://15.192.41.95/Cabina/asp/Login.asp"); 
WebElement text1 = driver.findElement(By.id("text1")); 
    text1.sendKeys("xxxx"); 
WebElement password1 = driver.findElement(By.id("password1")); 
    password1.sendKeys("xxxx");  
WebElement aceptar = driver.findElement(By.id("ok1")); 
    aceptar.click(); 
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);  
driver.switchTo().frame(driver.findElement(By.name("menu"))); 
WebElement txtNumPolSol = driver.findElement (By.id("txtNumPolSol")); 
    txtNumPolSol.sendKeys("877885"); 
WebElement Text8 = driver.findElement(By.name("txtNumofic")); 
    Text8.sendKeys("228");   
WebElement txtCveInc = driver.findElement(By.name("txtCveInc")); 
    txtCveInc.sendKeys("1"); 
WebElement clave = driver.findElement(By.id("txtCveInc")); 
    clave.sendKeys(Keys.TAB); 
driver.switchTo().frame(driver.findElement(By.name("dest"))); 
WebElement txtNomrepo = driver.findElement(By.id("txtNomrepo")); 
    txtNomrepo.sendKeys("Jorge Villarreal"); 
driver.findElement(By.id("txtRelacion")).sendKeys("Conductor"); 
WebElement txtTelrepo = driver.findElement(By.id("txtTelrepo")); 
    txtTelrepo.sendKeys("83029090");` 

Здесь различные вопросы, я получил:

не

1) Не удалось найти элемент с именем == txtOficina

2) Элемент больше не является действительным

3) Невозможно найти элемент с идентификатором == txtCveInc (поле есть)

4) Не удалось найти элемент с именем == txtCveInc (поле есть)

шаги, что система, чтобы получить вопросы:

1) Вход (до сих пор так хорошо) 2) сист em загружает главную страницу (страница имеет фреймы и получает все поля за 5 секунд ...) 3) Тип сценария над txtNumPolSol, txtNumofic и txtCveInc (большинство из них находятся в двух последних полях) 4) скрипт выполняет вкладку 5) Система загружает некоторую информацию, касающуюся записи, и сценарий продолжается ... Примечание: Почти все проблемы возникают на шаге 3 ...

Благодарим Вас за отзыв!

+0

Я не вижу, как вы пытаетесь найти элемент с именем 'txtOficina' в своем тесте. Я не вижу, как вы пытаетесь найти элемент с именем 'txtCveInc' в своем тесте. Что вы подразумеваете под элементом более недействительным? Если это событие StaleElemenetReferenceException добавляет, что ничего не собирается делать. Без разметки у нас будут проблемы, потому что вы, очевидно, взаимодействуете с фреймами. Наиболее вероятная проблема заключается в том, что вы ищете элементы в неправильном фрейме. – Ardesco

ответ

-1

Ключ здесь состоит в том, чтобы добавить по крайней мере 1 секунду неявного ожидания после каждого действия, то есть отправить ключи и т. Д. Это позволит «driver.findElement» достаточно времени, чтобы найти элемент. Хотя я бы предложил сохранить этот код в тестовой базе или методе многократного использования.

driver.manage(). Timeouts(). ImplicitlyWait (1, TimeUnit.SECONDS);

Это поможет сделать ваши веб-сайты менее шелушащимися.

+0

Ожидание условия, основанного на изменении DOM, лучше, чем приведение в ожидаемое время ожидания. TImed ожидания могут выйти из строя, если по некоторым причинам система работает медленнее, чем 1 секунда. – CMerrill

0

Это звучит как проблема с синхронизацией. Ваш имитируемый пользователь работает быстрее, чем страница становится готовой. В зависимости от времени загрузки страницы возникают различные проблемы.

Решение состоит в том, чтобы добавить ожидание после шагов, которые вызывают изменение DOM, чем влияет на ваш следующий шаг, но не приводит к тому, что WebDriver ждет до возвращения. Google 'webdriver ждет элемент', чтобы получить множество способов сделать это.