我正在尝试将一些内容发送到表格内的单元格。 该表位于由TinyMCE生成的iFrame中。 由于某种原因,键入的唯一字符是“\ n”。
我有两种方法:switchToFrame()
和switchToDefault()
,用于在iFrame和窗口之间切换。
我有一个在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。
以及form.typeInBody(content);
调用typeInBody(内容)。
知道为什么Selenium会这样吗?
答案 0 :(得分: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();
}