2014-10-03 40 views
0

我想将一些内容发送到表格中的单元格。 该表格位于由TinyMCE生成的iFrame内。 由于某些原因,唯一键入的字符是“\ n”。Selenium WebDriver的sendKeys只能键入新行

我有两种方法: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 2014-10-03 16:19:35

+0

我有一个突出显示一个元素的函数,当它应用于那个单元格时,它突出显示它。此外,我在'column.click()'之后放置了一个'Thread.sleep()'来查看焦点是否在那里。之后,在睡觉时(),我甚至在自己的单元上点了一下,以确保它。这就是我认为它来自Selenium的原因。 – tasegula 2014-10-03 17:40:06

回答

0

据我所知,它来自Selenium。尽管我放了一个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(); 
} 
相关问题