2014-10-03 3 views
0

테이블 안의 셀에 내용을 보내려고합니다. 테이블은 TinyMCE에서 생성 한 iFrame 안에 있습니다. 어떤 이유로 입력 된 문자는 "\ n"뿐입니다.Selenium WebDriver의 sendKeys는 새 줄만 입력합니다.

iFrame과 창 사이를 전환하는 두 가지 방법이 있습니다. switchToFrame()switchToDefault()입니다. 여기,

public void typeInColumn(int index, String content) { 
    switchToFrame(); 

    WebElement column = driver.findElement(COLS_LOC[index]); 
    column.click(); 
    column.sendKeys(content); 

    switchToDefault(); 
} 

마지막 : 컬럼 내부에 입력 할 수있는 방법은 여기

public void typeInBody(String content) { 
    switchToFrame(); 

    WebElement body = driver.findElement(BODY_LOC); 
    body.click(); 
    body.sendKeys(content); 

    switchToDefault(); 
} 

그리고 :

난 그냥 잘 작동 iframe이의 <body> 내부 종류의 방법이 "테스트"입니다 (최종 테스트는 아니며 위의 방법이 작동하는지 테스트하기위한 것입니다). 테스트 후 TinyMCE입니다. 여기

TinyMCE with typeInColumn()

및 typeInBody (내용)를 호출 form.typeInBody(content); 함께.

TinyMCE with typeInBody()

셀레늄이처럼 행동하는 이유 어떤 생각 ?

+0

나는 문제가 셀레늄 자체가 의심. 열에 데이터를 입력하려고 할 때 실제로 올바른 요소를 클릭하고 입력하고 있습니까? – Louis

+0

요소를 강조 표시하는 기능이 있으며 해당 셀에 적용되면 강조 표시됩니다. 또한, 나는'Thread.sleep()'을'column.click()'다음에 놓아서 포커스가 존재하고 있는지 알아 본다. 그 후, 잠()에있는 동안, 나는 확신하기 위해 그 세포에서 나 자신을 클릭했다. 그래서 셀레늄 때문이라고 생각합니다. – tasegula

답변

0

내가 말할 수있는 한, 그것은 셀레늄에서 나왔다. Thread.sleep()을 넣고 열을 클릭해도 셀 안에 인식되지 않았습니다.

나는 Action 개체를 넣고 그 셀로 변경 (클릭하고 타이핑)했다.

새로운 코드 :

public void typeInColumn(int index, String content) { 
    switchToFrame(); 

    WebElement column = driver.findElement(COLS_LOC[index]); 

    Actions build = new Actions(driver); 
    build.moveToElement(column).click().sendKeys(content).build().perform(); 

    switchToDefault(); 
} 
관련 문제