CodedUI prueba no espera a que el control existe

Estoy esperando para un control de existir, pero la prueba de la falla antes de que existe el botón.

Que da el error: The control is not available or not valid

El código que estoy usando es:

uIOKButton.WaitForControlExist(2000000);

//Click 'OK' button
Mouse.Click(uIOKButton, new Point(46, 19));

El tiempo, aunque yo la tengo configurada a 3 horas, tiempo de espera después de 30 minutos. Así que el tiempo no está funcionando de la manera que se supone que. Existe de todos modos a su alrededor?

Es de todos modos para que deje de fallar otra que aumentar el tiempo de espera?

  • Si usted no tiene ya, compruebe que el control existe y que coincide con la búsqueda de propiedades que se definen en el UIMap.
  • Existe, sólo se necesita un largo tiempo para llegar. Escribí/recorer la prueba a mí mismo.
  • Antes de llegar lejos en una sucia tangente ha intentado utilizar el WaitForReadyLevel configuración? Ajuste a AllThreads normalmente se resuelve este tipo de problema.
  • Yo no entiendo: ¿por Qué usted no desea aumentar el tiempo de espera, si se esta mucho tiempo. Y ¿a qué te refieres con «para que deje de fallar’? ¿Quieres una salida airosa, un controlador de excepción o algo?
  • perdón por la demora en llegar de vuelta, fue en días festivos. El tiempo de espera a pesar de que yo la tengo configurada a 3 horas, tiempo de espera después de 30 minutos. Así que el tiempo no está funcionando de la forma en que sus supuestos. Existe de todos modos a su alrededor?
  • La pregunta tiene mucho más sentido ahora. 30 minutos es el tiempo de prueba predeterminado de cualquier oportunidad que no ha sido cambiado en el local.testsettings?
  • Ya que se ha resuelto gracias, lo siento, no hizo más clara. Gracias
  • Ha es agradable cuando la solución es tan sencilla. Es extraño que el marco devuelve el engañoso mensaje de excepción. Ha sido un tiempo desde que he tenido un golpe de prueba el tiempo de espera, pero me parece recordar que el tiempo normal a cabo excepción de los más útiles.

InformationsquelleAutor ELSheepO | 2012-07-31

7 Kommentare

  1. 1

    Lo hice así:

    while (!uIItemComboBox.Exists)
            {
                System.Threading.Thread.Sleep(1000);
            }
    uIItemComboBox.SelectedItem = this.MyComboBox.UIItemComboBoxSelectedItem;

    Estoy seguro de que hay formas más agradable, pero funciona.

    • Gracias, pero fue en realidad el local.testsettings ese era el problema. El valor predeterminado de tiempo de espera fue de 30 minutos por lo que siempre tendría tiempo de espera, entonces. No importa cómo mucho de un tiempo de espera que tenía en su código.
  2. 0

    Puede utilizar el bucle while en lugar de la instrucción if

    El código se ve algo como esto

    loopcyle = 1;
    While(!uIOKButton.WaitForControlExist(2000) && loopcycle <=20)
    {
        //Click 'OK' button
        Mouse.Click(uIOKButton, new Point(46, 19));
        loopcycle ++;
        break;
    }

    Gracias,
    Karthik KK

    • Hace esto el tiempo de espera, a continuación, comprueba si existe el botón o simplemente mantiene una comprobación?
    • Su lógica es errónea. Después de 2000 milisegundos el WaitForControlExist devuelve false y el cuerpo del bucle se ejecuta. Mouse.Click plantea una excepción ya que el botón no existe y la prueba fallará. Además: ¿por qué el incremento de loopcycle mientras romper el bucle directamente después? Y si usted puede deshacerse de la ruptura ánd existe el botón (no levantar una excepción), esta secuencia de comandos, a continuación, presione el botón de 19 veces, el aumento de otro excepción porque el botón no existe después de que se presiona una vez.
  3. 0

    Yo sugeriría que usted agregue un cheque como:

    int count = 1;
    while (btnExists() == false){ 
        if (count > 1000) {
            //fail test or say that btn is not available
         }
        count ++;
        wait (1);
    }

    Usted no tendrá que esperar más de lo necesario. La prueba va a ir tan lejos como btn esté disponible. Pero asegúrese de establecer el «recuento» de tener un punto de salida en algún momento, en caso btn nunca va a aparecer

    • Con la prueba de falla de la zona, sólo quisiera agregar que el paso de la prueba que viene después? No es para esta parte de la prueba, sino en otra parte, que también puede causar problemas.
    • Supongo, yo realmente no entiendo lo que quieres decir por «yo podría añadir el paso de la prueba que viene después»?
    • Lo siento, quiero decir que yo sólo podría agregar el botón siguiente para ser presionado en que. La esperanza de que eso es más claro
    • Su código no es correcto. Creo que significó un while bucle en lugar de la primera if declaración.
  4. 0

    lo que hizo originalmente es la forma correcta de hacerlo.
    Pero después de 30 minutos de prueba predeterminado de tiempo de espera aparece.

    En su prueba de solución en el marco de la Solución de Elementos de la carpeta encontrar locales.testsettings

    Haga doble clic en él, ir a los tiempos de espera y eliminar el tiempo de espera predeterminado es de 30 minutos.

  5. 0

    CodedUI prueba no espera a que el control existe

    Uso Timeout atributo a hacer ninguna prueba en particular infinito. También puede especificar un determinado tiempo, si usted sabe que su prueba se ejecutará hasta ese momento.

    [Timeout(TestTimeout.Infinite)]
    • El uso de este atributo después de [TestMethod] atributo.
  6. 0

    Probar esto, antes de encontrar el ID de control, hizo el truco para mí, pero va a tomar alguna buena cantidad de tiempo. Así que si usted desea cargar temprana puede ser buscar la alternativa.

    BrowserWindow window = new BrowserWindow();
    window.WaitForControlExist();

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea