我尝试使用具有更多参数的函数执行脚本,并且每次尝试都返回错误:
Exception in thread "main" org.openqa.selenium.JavascriptException: ReferenceError: coords is not defined
我的剧本:
enter code here
if (driver instanceof JavascriptExecutor) {
((JavascriptExecutor) driver)
.executeScript("setNewCellType(new ZmianaTypuCommandFactory(),currentRozdzial,currentTable,this.activeCoords)");
我在开发人员工具中找到了函数,其形式是:
function setNewCellType(factory,nrRozdzial,tab,coords,newState,mode)
我在这个地方设置了断点来获取参数,参数是:
setNewCellType(newZmianaTypuCommandFactory(),currentRozdzial,currentTable,this.activeCoords,params);
this.activeCoords have value
(col: 2
colspan: 1
row: 2
rowspan: 1
siatkaCol: 2
siatkaRow: 2)
有人可以帮帮我吗?
我想要使用的元素在此会话中具有动态值,这些项目更多。
更多脚本:
driver.findElement(By.id("addTableRowCount")).clear();
driver.findElement(By.id("addTableRowCount")).sendKeys("9");
driver.findElement(By.id("addTableColCount")).clear();
driver.findElement(By.id("addTableColCount")).sendKeys("2");
driver.findElement(By.id("addTableOK")).click();
driver.switchTo().defaultContent();
driver.findElement(By.id("tytulTabeli")).sendKeys("Tytuł tabeli - 1");
wait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//p[text()='Obszar danych']")));
driver.findElement(By.xpath("//p[text()='Obszar danych']")).click();
if (driver instanceof JavascriptExecutor) {
((JavascriptExecutor) driver)
.executeScript("setNewCellType(new ZmianaTypuCommandFactory(),currentRozdzial,currentTable,this.activeCoords)");
@ Zhivko.Kostadinov
var ZmianaTypuCommandFactory = Class.create(CellTypeChangeCommandFactory,{
initialize: function($super){
$super(new ZmianaTypuValidator());
this.wymagalnoscFactory = new WymagalnoscCommandFactory();
},
createSingleCmd: function(nrRozdzial,tab,coords,newState){
if(newState.cellType.cellTypeInt == TYPY_KOMOREK.ZAZNACZENIE.cellTypeInt)
{ var cmd = new CompositeCommand();
var typeCmd = new ZmianaTypuCommand();
typeCmd.setState(tab,coords,newState);
cmd.addCommand(typeCmd);
var wymagalnoscCmd = this.wymagalnoscFactory.createCmd(nrRozdzial,tab,coords,true);
if(wymagalnoscCmd){
cmd.addCommand(wymagalnoscCmd);
return cmd;
}
else{
return typeCmd;}}
else{
var cmd = new ZmianaTypuCommand();
cmd.setState(tab,coords,newState);
return cmd; }}});
答案 0 :(得分:0)
很可能你的问题在这里:
this.activeCoords
你必须记住“这个”指针取决于上下文。您必须传递“绝对引用”,即您可以从控制台引用的内容,作为脚本执行程序,afaik在全局上下文中运行。
测试脚本的良好验证方法 - 如果您可以在开发工具控制台中运行它,您应该能够使用scriptExecutor运行它
如果测试期间数据始终相同,您可以执行以下操作:
executeScript("setNewCellType(new ZmianaTypuCommandFactory(),currentRozdzial,currentTable,
{
col: 2
colspan: 1
row: 2
rowspan: 1
siatkaCol: 2
siatkaRow: 2
},
{
// params data in here
cellType: {type:'Kw'}
}
)");