Selenium Невозможно найти элемент в IE с кадром переключателя - PullRequest
0 голосов
/ 04 октября 2018

Я создаю в селене процесс, который выполняется только в IE, и я не могу найти xpath как следствие.

Мне удалось продвинуть тест с использованием фрейма переключателя,

Когдапереключение на фрейм " frame1 " или попробуйте идентифицировать элемент ( id: txtChassi ), где происходит ошибка:

Исключение в потоке "main "org.openqa.selenium.NoSuchFrameException: не найден элемент кадра по имени или идентификатору frame1

Исключение в потоке" main "org.openqa.selenium.NoSuchElementException: Невозможно найти элемент с помощью селектора CSS == # txtChassi

Попробуйте один:

driver0.switchTo().frame("frame1");

WebElement IptBoxChassi = driver0.findElement(By.id("txtChassi"));
IptBoxChassi.sendKeys(rs.getString(cChassi));

Попробуйте два:

WebDriverWait waitIptBoxChassi = new WebDriverWait(driver0, 10);                        

waitIptBoxChassi.until(ExpectedConditions.visibilityOfElementLocated(By.id("txtChassi")));

 WebElement IptBoxChassi = driver0.findElement(By.id("txtChassi"));
    IptBoxChassi.sendKeys(rs.getString(cChassi));

Вот еще данные от Error и веб-страницы:

enter image description here

<FRAME noResize marginHeight=0 src="tela_topo.asp" frameBorder=no name=top marginWidth=0 scrolling=no target="contents">

enter image description here

<FRAMESET id=frame1 border=0 cols="157,*,0'" onunload="javascript: if (!(fechando)) window.location.href = '/controleacesso/encerrar.asp';"><FRAME noResize marginHeight=0 src="pre_menu.asp" frameBorder=no name=contents marginWidth=0 scrolling=no target="form"><FRAMESET id=frameAbaixo border=0 rows=*%,17%,0% onunload="javascript: if (!(fechando)) window.location.href = '/controleacesso/encerrar.asp';"><FRAME noResize marginHeight=0 src="tela_direita.asp" frameBorder=no name=form marginWidth=0><FRAME noResize marginHeight=0 src="pre_botoes.asp" frameBorder=no name=botoes marginWidth=0 scrolling=no><FRAME noResize marginHeight=0 src="Home/Home.asp" frameBorder=no name=Consulta marginWidth=0></FRAMESET><FRAMESET id=framelado border=5 rows=*,17% onunload="javascript: if (!(fechando)) window.location.href = '/controleacesso/encerrar.asp';"><FRAME noResize marginHeight=0 src="tela_direita.asp" frameBorder=no name=formlado marginWidth=0><FRAME noResize marginHeight=0 src="pre_botoes.asp" frameBorder=no name=botoeslado marginWidth=0 scrolling=no></FRAMESET></FRAMESET>

enter image description here

<FRAME noResize marginHeight=0 src="pre_menu.asp" frameBorder=no name=contents marginWidth=0 scrolling=no target="form">

Здесь происходит ошибка, WebDriver не видит элемент вкадр

enter image description here

<FORM id=form1 method=post name=form1 action=RegistroContrato.asp><INPUT id=oculto type=hidden name=oculto> <INPUT type=hidden name=idPessoa> <INPUT id=ocultoIdTransacao type=hidden name=ocultoIdTransacao> <INPUT id=ocultoIdAgenteFinanceiro type=hidden name=ocultoIdAgenteFinanceiro> <INPUT id=ocultoCNPJCredor type=hidden name=ocultoCNPJCredor> <INPUT id=ocultoNomeCredor type=hidden name=ocultoNomeCredor> <INPUT id=ocultoCPFCNPJDevedor type=hidden name=ocultoCPFCNPJDevedor> <INPUT id=ocultoNomeDevedor type=hidden name=ocultoNomeDevedor> <INPUT id=ocultoSequencia type=hidden name=ocultoSequencia> <INPUT id=ocultoPlaca type=hidden name=ocultoPlaca> <INPUT id=ocultoRenavam type=hidden name=ocultoRenavam> <INPUT id=ocultoUF type=hidden name=ocultoUF> <INPUT id=ocultoMarcaModelo type=hidden name=ocultoMarcaModelo> <INPUT id=ocultoAnoFabricacao type=hidden name=ocultoAnoFabricacao> <INPUT id=ocultoAnoModelo type=hidden name=ocultoAnoModelo> <INPUT id=ocultoEspecie type=hidden name=ocultoEspecie> <INPUT id=ocultoTipoVeiculo type=hidden name=ocultoTipoVeiculo> <INPUT id=ocultoCombustivel type=hidden name=ocultoCombustivel> <INPUT id=ocultoCategoria type=hidden name=ocultoCategoria> <INPUT id=ocultoDataContrato type=hidden name=ocultoDataContrato> <INPUT id=ocultoCodigoTipoContrato type=hidden name=ocultoCodigoTipoContrato> <INPUT id=ocultoDescricaoTipoContrato type=hidden name=ocultoDescricaoTipoContrato> <INPUT id=ocultoStatusContrato type=hidden name=ocultoStatusContrato> 
<TABLE cellSpacing=1 cellPadding=0 width="90%" align=center border=0>
<TBODY>
<TR>
<TD width="15%">Chassi:&nbsp;</TD>
<TD width="85%"><INPUT onkeypress=javascript:ValidaCaracter(); id=txtChassi class=box maxLength=20 size=30 name=txtChassi> </TD></TR>
<TR>
<TD width="15%">Contrato:&nbsp;</TD>
<TD width="85%"><INPUT id=txtNumeroContrato class=box maxLength=20 size=30 name=txtNumeroContrato> </TD></TR>
<TR>
<TD colSpan=2 noWrap>
<HR color=#376cb7 SIZE=1>
</TD></TR></TBODY></TABLE></FORM>

1 Ответ

0 голосов
/ 06 октября 2018

ОШИБКА 1:

  1. убедитесь, что ваш элемент находится в iFrame, тогда только вам нужно переключиться в требуемый iframe и выполнить действия с требуемым элементом.

  2. Если вы переключились на какой-то iFrame ранее, не забудьте переключиться обратно с этого iframe (после того, как он был выполнен) для работы с каким-либо другим элементом на обычной веб-странице.

например

  • Переключение по кадрам webelement

    WebElement frame = driver.FindElement(By.locator);
    driver.switchTo().frame(frame);
    
  • Включение с использованием индекса

    driver.switchTo().frame(0); // frame index 0, 1 and so on
    
  • Включение с использованием ExplicitWait (будет ждать, пока данный кадр будет доступен и когда он станет доступен, затем переключиться)

    new WebDriverWait(driver, 20).until(ExpectedConditions.frameToBeAvailableAndSwitchToIt(By.locator));
    
    ....
    
    //perform action on webelement inside iframe
    
    ....
    
    driver.switchTo().defaultContent();  // switchback from frame
    
    /* if there is any other iframe and you have to work within then again you have to switch into other iframe as well as shown above*/
    

ОШИБКА 2:

  1. Если ваш элемент не находится в iframe (если элемент находится в iframe, то он показывает NoSuchElementException), тогда используйте код Implicit или Explicit, пока указанный элемент не станет доступным для выполнения действия.

Незначительное наблюдение: говорится Невозможно найти элемент с помощью селектора css == # txtChassi , но вы используете By.id

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...