Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

StaleElementReferenceException #101

Closed
estivalet opened this issue Sep 17, 2013 · 21 comments
Closed

StaleElementReferenceException #101

estivalet opened this issue Sep 17, 2013 · 21 comments
Labels
Milestone

Comments

@estivalet
Copy link
Contributor

Recebo esse erro aleatoriamente durante a execução dos testes automatizados do sistema Ação Fiscal:

Acho que o DBehave não tem um tratamento específico para essa exceção do Webdriver. Eventualmente quando esse erro aparecia eu tratava ele dentro de um try-catch e re-executava a ação que tinha dado erro, mas isso é um pouco ineficiente.

Pesquisando um pouco sobre o assunto achei essa alternativa que usa o FluentWait. Acho que seria interessante implementar isso para aguardar o elemento.

Wait wait = new FluentWait( driver )
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring( StaleElementReferenceException.class ) ;

Vejam o resto do código no post: http://thegreenoak.blogspot.com.br/2013/03/getting-around-webdriver.html

Failed to run story stories/acfisc/cadastro/distribuicao/cancelamento.storyConverted
org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up
Command duration or timeout: 40.23 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/stale_element_reference.html
Build info: version: '2.33.0', revision: '4ecaf82108b2a6cc6f006aae81961236eba93358', time: '2013-05-22 12:00:17'
System info: os.name: 'Linux', os.arch: 'i386', os.version: '2.6.38-10-generic-pae', java.version: '1.6.0_20'
Session ID: c06d196d-554f-43ae-9668-d5f1a6ae177e
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{platform=LINUX, acceptSslCerts=true, javascriptEnabled=true, browserName=firefox, rotatable=false, locationContextEnabled=true, version=10.0.5, cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=true, takesScreenshot=true}]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:191)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268)
at org.openqa.selenium.remote.RemoteWebElement.isEnabled(RemoteWebElement.java:142)
at br.gov.frameworkdemoiselle.behave.runner.webdriver.ui.WebBase.verifyState(WebBase.java:197)
at br.gov.frameworkdemoiselle.behave.runner.webdriver.ui.WebBase.waitElement(WebBase.java:216)
at br.gov.frameworkdemoiselle.behave.runner.webdriver.ui.WebButton.click(WebButton.java:10)
at br.gov.frameworkdemoiselle.behave.parser.jbehave.CommonSteps.clickButton(CommonSteps.java:121)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jbehave.core.steps.StepCreator$ParameterisedStep.perform(StepCreator.java:550)
at org.jbehave.core.embedder.StoryRunner$FineSoFar.run(StoryRunner.java:499)
at org.jbehave.core.embedder.StoryRunner.runStepsWhileKeepingState(StoryRunner.java:479)
at org.jbehave.core.embedder.StoryRunner.runScenarioSteps(StoryRunner.java:443)
at org.jbehave.core.embedder.StoryRunner.runCancellable(StoryRunner.java:305)
at org.jbehave.core.embedder.StoryRunner.run(StoryRunner.java:219)
at org.jbehave.core.embedder.StoryRunner.run(StoryRunner.java:180)
at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:229)
at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:201)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Element not found in the cache - perhaps the page has changed since it was looked up

@botelhojp
Copy link
Contributor

@estivalet, como o erro acontece aleatóriamente, o primeiro passo é reproduzi-lo, para entender o que estar acontecendo.
Em "tese" não deveria acontecer isso.
Isso ocorre quando tenta-se encontrar um elemento na tela?
Se você aumentar o timeout do framework ja não resolve?

@estivalet
Copy link
Contributor Author

@botelhojp pelo que eu entendi, esse erro ocorre no momento que o webdriver tenta interagir com o elemento. O Webdriver até encontra o elemento em um primeiro momento, mas no momento seguinte ao tentar interagir (click, sendkeys, etc) ele não encontra mais o elemento e joga essa exceção. Normalmente está relacionado a eventos ajax que podem modificar elementos da tela. Mas em alguns outros casos é aleatório.

Uma primeira solução que eu tive que fazer era procurar o elemento novamente antes de interagir. Eu tinha um método assim:

public void clickElement(By by) {
    try {
        waitForElement(by);
        driver.findElement(by).click();
    } catch (StaleElementReferenceException sere) {
        driver.findElement(by).click();
    }
}

Depois melhorei e fiz:

/**
 * Aguarda ate o elemento estar totalmente visivel e disponivel para
 * interacao do selenium.
 * 
 * @param element
 */
public WebElement waitForElement(final By locator) {
    isElementPresent(locator);
    Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
            .withTimeout(TIMEOUT, TimeUnit.SECONDS)
            .pollingEvery(1, TimeUnit.SECONDS)
                            .ignoring(StaleElementReferenceException.class ) 
            .ignoring(NoSuchElementException.class);

    WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
        public WebElement apply(WebDriver driver) {
            return driver.findElement(locator);
        }
    });
    return foo;
};

Essa era a implementação que eu tinha antes do DBehave e aparentemente tinha resolvido o problema.

O principal problema é que isso é aleatório, pode passar umas 10 execuções sem aparecer, mas de uma hora para outra ocorre. Usando o FluentWait esse erro parece não ocorrer mais.

O valor de timeout do meu sistema já está bem alto, 40s.

juliancesar added a commit that referenced this issue Sep 18, 2013
@ghost ghost assigned juliancesar Sep 18, 2013
@juliancesar
Copy link
Contributor

@estivalet , podemos encerrar essa issue ou você ainda tem problemas?

@estivalet
Copy link
Contributor Author

Reabrindo...

Estou executando meus testes em uma máquina virtual XP com Chrome. Ao rodar o meu teste a exceção ocorre aleatoriamente e em diferentes campos. Rodei em duas máquinas virtuais diferentes e o problema se repete. O problema ocorre também no Firefox.

Segue o link para um vídeo para ficar mais fácil de entender (https://docs.google.com/file/d/0B-2oyJZgQ-7IelFfUTZHUjQ2Nms/edit?usp=sharing).

O mesmo teste foi executado no mesmo ambiente porém não era máquina virtual e funcionou perfeitamente.

Existe alguma recomendação para não rodar testes automatizados em máquinas virtuais?

Já tentei aumentar o timeout e o minwait mas não está resolvendo.

O mesmo teste roda perfeitamente no Ubuntu e Firefox.

O problema é que preciso rodar no XP+Chrome...

@estivalet estivalet reopened this Oct 2, 2013
@botelhojp
Copy link
Contributor

A princípio eu desconfiaria da versões o navegador Chrome e do driver baixado.
Você pode confirmar se estão na mesma versão?
Qual o versão do DBehave?

@estivalet
Copy link
Contributor Author

Sim, todos na mesma versão XP, Chrome e Chromedriver
Fork atualizado do DBehave

@botelhojp
Copy link
Contributor

Rodei todos os nossos testes em um Windows 7 virtualizado com o Firefox 22, no Dbehave 1.2.1-SNAPSHOT gerada em 03/10/2013 11:04. Tudo funcionou. Não acredito que a origem do problema seja a virtualização do SO.

Tente reproduzir o erro, criar um passo-a-passo infalível onde o erro sempre aconteça. Dai ficará mais fácil investigar o que pode estar acontecendo.

@estivalet
Copy link
Contributor Author

Já tentei diversas vezes fazer isso, mas ainda não consegui. Cada vez que eu rodo a mesma estória o comportamento é diferente. Às vezes ocorre o erro, outras passa perfeitamente, e quando o erro ocorre nem sempre é no mesmo campo.

O ideal seria se você pudesse rodar os meus testes e com a nossa aplicação. Em outros 2 sistemas que temos aqui nunca apresentou esse erro.

Talvez o problema seja em função de um componente personalizado que eu tive que criar, mas de qualquer forma não justifica funcionar em um ambiente e em outro não.

Vou seguir investigando...

@estivalet
Copy link
Contributor Author

Está aparecendo novamente (mas com bem menos frequencia) em outro sistema que estamos automatizando. Geralmente ocorre nas combo boxes. Por exemplo, tenho uma combo box que tenho que escolher a UF. Após escolher a UF tenho que escolher o Município. Quando escolho a UF é disparado um AJAX para popular a combo de município, porém não é apresentado na tela nenhum componente do tipo "Aguardando". O evento é bem rápido. Porém o erro normalmente acontece na combo de munícipio. Está estourando na WebSelect.java nas linhas:

public void selectByVisibleText(String value) {
List list = super.getElements();
if (list.get(0).getTagName().equals("select")) {

Às vezes ocorre na primeira, A maior parte das vezes ocorre na segunda linha como no exemplo abaixo:

org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up
Command duration or timeout: 30.07 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/stale_element_reference.html
Build info: version: '2.33.0', revision: '4ecaf82108b2a6cc6f006aae81961236eba93358', time: '2013-05-22 12:00:17'
System info: os.name: 'Linux', os.arch: 'i386', os.version: '2.6.38-10-generic-pae', java.version: '1.6.0_20'
Session ID: 745e81c6-7251-474d-87c3-ec36b9759aba
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{platform=LINUX, acceptSslCerts=true, javascriptEnabled=true, browserName=firefox, rotatable=false, locationContextEnabled=true, version=10.0.5, cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=true, takesScreenshot=true}]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:191)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268)
at org.openqa.selenium.remote.RemoteWebElement.getTagName(RemoteWebElement.java:117)
at br.gov.frameworkdemoiselle.behave.runner.webdriver.ui.WebSelect.selectByVisibleText(WebSelect.java:60)
at br.gov.frameworkdemoiselle.behave.parser.jbehave.CommonSteps.inform(CommonSteps.java:209)
at sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.jbehave.core.steps.StepCreator$ParameterisedStep.perform(StepCreator.java:550)
at org.jbehave.core.embedder.StoryRunner$FineSoFar.run(StoryRunner.java:499)
at org.jbehave.core.embedder.StoryRunner.runStepsWhileKeepingState(StoryRunner.java:479)
at org.jbehave.core.embedder.StoryRunner.runScenarioSteps(StoryRunner.java:443)
at org.jbehave.core.embedder.StoryRunner.runCancellable(StoryRunner.java:305)
at org.jbehave.core.embedder.StoryRunner.run(StoryRunner.java:219)
at org.jbehave.core.embedder.StoryRunner.run(StoryRunner.java:180)
at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:229)
at org.jbehave.core.embedder.StoryManager$EnqueuedStory.call(StoryManager.java:201)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Element not found in the cache - perhaps the page has changed since it was looked up
Build info: version: '2.33.0', revision: '4ecaf82108b2a6cc6f006aae81961236eba93358', time: '2013-05-22 12:00:17'
System info: os.name: 'Linux', os.arch: 'i386', os.version: '2.6.38-10-generic-pae', java.version: '1.6.0_20'
Driver info: driver.version: unknown
at .(resource://fxdriver/modules/web_element_cache.js:7403)
at .(file:///tmp/anonymous1785274455730336332webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:6993)
at .(file:///tmp/anonymous1785274455730336332webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:9944)
at .(file:///tmp/anonymous1785274455730336332webdriver-profile/extensions/fxdriver@googlecode.com/components/command_processor.js:10456)
at .(file:///tmp/anonymous17

@juliancesar
Copy link
Contributor

@estivalet acabamos de implementar algo que pode nos ajudar a encontrar a solução. Quando um erro acontece antes somente era gerado um print screen, agora nós também geramos o HTML da página e colocamos um link no relatório do JBehave logo abaixo da imagem do erro.
Verifique se o elemento realmente existe no html que geramos.

@estivalet
Copy link
Contributor Author

Sim, o elemento existe. Segue os relatórios do jbehave e marquei o campo problemático. O campo está lá, o valor que eu quero selecionar também está lá, mas o erro segue no mesmo lugar:

public void selectByVisibleText(String value) {
    if (getElements().get(0).getTagName().equals("select")) {

1
2

@juliancesar
Copy link
Contributor

@estivalet , existe alguma ação assíncrona de preenchimento do dropdown Setor? Como por exemplo: somente quando o campo UORG é preenchido que os valores do setor são mostrados.

@estivalet
Copy link
Contributor Author

Sim no campo UORG tenho o seguinte:

< select id="usuarioForm:uorgExercicio" name="usuarioForm:uorgExercicio" size="1" tabindex="20" onchange="A4J.AJAX.Submit('usuarioForm',event,{'similarityGroupingId':'usuarioForm:j_id125','parameters':{'usuarioForm:j_id125':'usuarioForm:j_id125'} } )" >

O campo setor problemático:

< select id="usuarioForm:setorExercicio" name="usuarioForm:setorExercicio" size="1" tabindex="21" >

Quando mudo a UORG o campo setor é recarregado. O evento é extremamente rápido tanto que nem tem uma tela do tipo aguardando.

@estivalet
Copy link
Contributor Author

Vejo que muitas das soluções para o esse erro do Webdriver é buscar o elemento novamente caso ele ocorra. Tipo:

public void click() {
try {
delay();
underlyingElement.click();
} catch (StaleElementReferenceException sere) {
againLocate();
click();
}
}

http://www.jeromemueller.ch/archives/311/webdriver-staleelementreferenceexception

@estivalet
Copy link
Contributor Author

Estou tentando fazer uma mudança na WebBase.java. Criei o método:

    public List<WebElement> getElementByLocator(final By locator) {
        System.out.println("Get element by locator: " + locator.toString());
        final long startTime = System.currentTimeMillis();
        Wait<WebDriver> wait = new FluentWait<WebDriver>((WebDriver) runner.getDriver()).withTimeout(30, TimeUnit.SECONDS).pollingEvery(5, TimeUnit.SECONDS).ignoring(StaleElementReferenceException.class);
        int tries = 0;
        boolean found = false;
        List<WebElement> we = null;
        while ((System.currentTimeMillis() - startTime) < 10000) {
            System.out.println("Searching for element. Try number " + (tries++));
            try {
                wait.until(ExpectedConditions.visibilityOfElementLocated(locator));
                we = driver.findElements(locator);
                found = true;
                break;
            } catch (StaleElementReferenceException e) {
                System.out.println("Stale element: \n" + e.getMessage() + "\n");
            }
        }
        long endTime = System.currentTimeMillis();
        long totalTime = endTime - startTime;
        if (found) {
            System.out.println("Found element after waiting for " + totalTime + " milliseconds.");
        } else {
            System.out.println("Failed to find element after " + totalTime + " milliseconds.");
        }
        return we;
    }

E no método getElements() estou chamando o método acima:

                    for (int i = 0; i < frame.countFrames(); i++) {
                        frame.switchNextFrame();
                        List<WebElement> elementsFound = getElementByLocator(by);
                        if (elementsFound.size() > 0) {

Estou rodando diversas vezes, pois como falei o erro é aleatório. Por enquanto parece resolver... vamos ver...

@estivalet
Copy link
Contributor Author

não funcionou... e já estou meio sem ideia de como fazer para resolver esse problema... ninguém mais teve esse problema até agora??? Parece ser um problema comum do Webdriver.

Achei que tratando o StaleElementReferenceException no getElements() iria resolver, mas na verdade o erro sem que ocorre dá linha abaixo da classe WebSelect

    public void selectByVisibleText(String value) {
        WebElement we = getElements().get(0);
        String tag = we.getTagName(); <--------------------------- ERRO!!!!!
        if (tag.equals("select")) {

Eu entendo que no momento do getElements() o WebDriver encontra uma referência válida do elemento, mas no momento em que se recupera o elemento (.get(0)) essa referência já não é mais válida e
então é necessário retornar a tela e pegar uma nova referência ao elemento.

Se eu coloco um try-catch funciona, mas não é uma solução global para o framework...

    public void selectByVisibleText(String value) {
        WebElement we = getElements().get(0);
        String tag;
        try {
            tag = we.getTagName();
        } catch (StaleElementReferenceException sere) {
            we = getElements().get(0);
            tag = we.getTagName();
        }

@juliancesar
Copy link
Contributor

Estou lendo alguns artigos (inclusive o que você enviou) para tentar ajudar, mas acredito que teremos que colocar algum recurso avançado ai! Como por exemplo ele ficar tentando até X vezes, ou por algum tempo.
E o pior é que não estou conseguindo reproduzir isso nas nossas aplicações de teste.

@juliancesar
Copy link
Contributor

Por favor, me adicione no PSI para tratarmos deste assunto.

juliancesar added a commit that referenced this issue Oct 22, 2013
@estivalet
Copy link
Contributor Author

A solução proposta pelo Julian está funcionando perfeitamente!!!

@estivalet
Copy link
Contributor Author

Infelizmente reabrindo... @juliancesar agora peguei o erro em um campo textfield (WebTextField.java:53). Acho que temos que fazer um tratamento semelhante ao que você fez para a combo...

(org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up
Command duration or timeout: 30.02 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/stale_element_reference.html
Build info: version: '2.33.0', revision: '4ecaf82108b2a6cc6f006aae81961236eba93358', time: '2013-05-22 12:00:17'
System info: os.name: 'Linux', os.arch: 'i386', os.version: '2.6.38-10-generic-pae', java.version: '1.6.0_20'
Session ID: 702b4923-b633-4d34-b5c7-8db200ac2bdd
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{platform=LINUX, acceptSslCerts=true, javascriptEnabled=true, browserName=firefox, rotatable=false, locationContextEnabled=true, version=10.0.5, cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=true, takesScreenshot=true}])
Quando informo "1133" no campo "Complemento" (NOT PERFORMED)
Quando informo "Praia de Belas" no campo "Bairro" (NOT PERFORMED)
Quando informo "Porto Alegre" no campo "Município" (NOT PERFORMED)
Quando informo "Próximo CIENTEC" no campo "Ponto de Referência" (NOT PERFORMED)
Então será exibido no "Campo de Mensagem do Sistema" o valor "Período de PPA definido com sucesso." (NOT PERFORMED)

Failed to run story stories/execucao/demandas/CadastrarDemandaExterna.storyConverted
org.openqa.selenium.StaleElementReferenceException: Element not found in the cache - perhaps the page has changed since it was looked up
Command duration or timeout: 30.02 seconds
For documentation on this error, please visit: http://seleniumhq.org/exceptions/stale_element_reference.html
Build info: version: '2.33.0', revision: '4ecaf82108b2a6cc6f006aae81961236eba93358', time: '2013-05-22 12:00:17'
System info: os.name: 'Linux', os.arch: 'i386', os.version: '2.6.38-10-generic-pae', java.version: '1.6.0_20'
Session ID: 702b4923-b633-4d34-b5c7-8db200ac2bdd
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities [{platform=LINUX, acceptSslCerts=true, javascriptEnabled=true, browserName=firefox, rotatable=false, locationContextEnabled=true, version=10.0.5, cssSelectorsEnabled=true, databaseEnabled=true, handlesAlerts=true, nativeEvents=false, webStorageEnabled=true, applicationCacheEnabled=true, takesScreenshot=true}]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:191)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
at org.openqa.selenium.remote.RemoteWebElement.execute(RemoteWebElement.java:268)
at org.openqa.selenium.remote.RemoteWebElement.sendKeys(RemoteWebElement.java:89)
at br.gov.frameworkdemoiselle.behave.runner.webdriver.ui.WebTextField.sendKeys(WebTextField.java:53)

@estivalet estivalet reopened this Oct 31, 2013
@juliancesar
Copy link
Contributor

@estivalet , estou estudando uma forma de subir esse tratamento para o driver como um todo, pretendo ter uma versão snapshot para a semana que vêm.

juliancesar added a commit that referenced this issue Nov 1, 2013
melhoria nas frases de verificação de texto na tela e em elementos
específicos.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants