Selenium clicar em um h:commandButton dentro de um rich:modalPanel [RESOLVIDO]

1 resposta
cleiton_herrmann

Olá a todos…

Bom pessoal, eu nao consigo fazer com que o selenium clique em um determinado h:commandButton que está dentro de um rich:modalPanel, ele me diz q não encontra o elemento… O código que o selenium ide gera é o código abaixo

public void testUntitled() throws Exception { selenium.open("/erp/login.seam?cid=17"); selenium.type("login:username", "demo1"); selenium.type("login:password", "demo1"); selenium.click("login:login"); selenium.waitForPageToLoad("30000"); selenium.click("relatorio"); selenium.click("//a[@id='modalRelatorio:camposcopyAlllink']/div"); selenium.click("modalRelatorio:gerar"); selenium.waitForPageToLoad("30000"); }
é na penultima linha que da erro: element ‘modalRelatorio:gerar’ not found, só q nos outros botões, funciona perfeitamente, a única diferença, é que este botão está dentro de um modalPanel…
Em testes que eu fiz, eu consegui fazer o selenium clicar no botão, porém eu tive que tirar ele fora da tag

, que eu não quero tirar pq tem um esquema que o botão aparece ou não, dada uma condição…

este é o código do botao, é um botão pra gerar relatório…

<s:div id="botaoGerar" styleClass="actionButtons" rendered="#{empty from}"> <h:commandButton id="gerar" rendered="#{not empty relatorioList.camposSelecionados}" action="#{relatorioList.gerarRelatorio(contaList.resultList, contaList.conta)}" value="Ok" /> </s:div>
Alguém tem alguma idéia de como acessar esse botao ??

Obs. eu nao posso tirar o id do

pq eu uso ele pra renderizar ou não o botão.

Desde já grato t+

1 Resposta

cleiton_herrmann

Bom pessoal, descobri o que estava acontecendo…

É um esquema pra gerar relatório dinamico, onde o usuário escolhe os campos que ele quer que sejam impressos, entao caso ele não tenha selecionado nenhum campo. o botão nao aparece. entao o selenium clicava no botao pra selecionar todos os campos, e depois no botao pra gerar o relatório, só q o ajax demora um pouco pra renderizar o botao na tela, entao botao pra gerar o relatório ainda não existe no fonte da pagina quando o selenium clica nele, pra resolver o problema eu só fiz um Thread.sleep(2000) logo apos o comando pro selenium clicar no botao que seleciona todos os campos, entao ele aguarda um pouco, e este pouco (2 segundos) é tempo suficionente pro ajax renderizar o botao do relatorio, depois disso clica no botao pra gerar o relatório.

Criado 16 de novembro de 2009
Ultima resposta 16 de nov. de 2009
Respostas 1
Participantes 1