2014-10-03 2 views
0

Я пытаюсь отправить некоторый контент в ячейку внутри таблицы. Таблица находится внутри iFrame, созданного TinyMCE. По какой-то причине единственными введенными символами являются «\ n».SendKeys Selenium WebDriver только типы новых строк

У меня есть два метода: switchToFrame() и switchToDefault(), для переключения между iFrame и окном.

У меня есть метод, который типы внутри <body> в плавающем фрейме, который работает просто отлично:

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

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

    switchToDefault(); 
} 

А вот метод типа внутри колонны:

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

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

    switchToDefault(); 
} 

Наконец, здесь является «испытанием» (не является окончательным испытанием, просто для проверки того, что вышеуказанные методы работают):

@Test(description = "see if tinyMCE methods work") 
public void test() { 
    String content = "Neque porro quisquam est \n" + 
        "qui dolorem ipsum quia \n" + 
        "dolor sit amet, \n" + 
        "consectetur, adipisci velit..."; 

    form = page.getForm(); 
    form.emptyFields(); // driver.findElement(BODY_LOC).clear(); 

    form.insertColumns(); // it's an option from tinyMC (just clicks the button) 
    form.typeInColumn(0, content); // calls typeInColumn(0, content); 

    form.clickSave(); // saves the form 

    form = page.getForm(); // opens the form again 
    // no assert for now 
} 

Это TinyMCE после теста.

TinyMCE with typeInColumn()

и вот с form.typeInBody(content); который вызывает typeInBody (содержание).

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(); 
} 
Смежные вопросы