获得;未定义参数";从Selenium运行javascript时出错

获得;未定义参数";从Selenium运行javascript时出错,javascript,selenium-webdriver,Javascript,Selenium Webdriver,TestCase类是初始化驱动程序并调用url(url“”)的地方 TC1是我去亚马逊登录页面的测试 public class TC1 extends TestCase { @Test public void runTC1 () { GoToSignInPage gts = new GoToSignInPage(driver); gts.clickElement(); } } GoToSignPage中写入了转到登录页的逻辑 p

TestCase类是初始化驱动程序并调用url(url“”)的地方

TC1是我去亚马逊登录页面的测试

public class TC1 extends TestCase {
    @Test
    public void runTC1 () 
    {
        GoToSignInPage gts = new GoToSignInPage(driver);
        gts.clickElement();
    }
}
GoToSignPage中写入了转到登录页的逻辑

public class GoToSignInPage {

    WebDriver driver;

    public GoToSignInPage(WebDriver driver)
    {
        this.driver=driver;
    }

    InitialPage ip = new InitialPage(driver);
    InitializeDriver id = new InitializeDriver();

    public void clickElement()
    {
        Actions action = new Actions(driver);
        //driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);
        JavascriptExecutor jse = (JavascriptExecutor)driver;
        //ip.yourOrders(driver).click();
        jse.executeScript("argument[0].style.border='3px dotted blue'", ip.yourOrders(driver));
action.moveToElement(ip.yourOrders(driver)).moveToElement(ip.signInBt(driver)).click().build().perform();
}
InitialPage类具有所有必需的页面对象

public class InitialPage {

    WebDriver driver;

    public InitialPage(WebDriver driver)
    {
        this.driver = driver;
    }

    WebElement element ;

    public WebElement yourOrders(WebDriver driver)
    {
        element = driver.findElement(By.id("nav-link-yourAccount"));
        return(element);

    }
    public WebElement signInBt(WebDriver driver)
    {
        element = driver.findElement(By.xpath(".//*[@id='nav-flyout-ya-signin']/a/span"));
        return(element);

    }

}
错误如下所示

org.openqa.selenium.WebDriverException:未知错误:未定义参数 (会话信息:chrome=56.0.2924.87) (驱动程序信息:chromedriver=2.24.417431(9EA000394714D2FBB20850021F6204F2256B9CF),平台=Windows NT 6.3.9600 x86_64)(警告:服务器未提供任何堆栈跟踪信息) 命令持续时间或超时:22毫秒 构建信息:版本:“3.0.0-beta1”,修订版:“8e4315c”,时间:“2016-07-28 18:04:05-0700” 系统信息:主机:'VAIO',ip:'192.168.0.6',os.name:'Windows 8.1',os.arch:'amd64',os.version:'6.3',java.version:'1.8.0_45' 驱动程序信息:org.openqa.selenium.chrome.ChromeDriver 功能[{applicationCacheEnabled=false,rotatable=false,mobileEmulationEnabled=false,networkConnectionEnabled=false,chrome={chromedriverVersion=2.24.417431(9EA000394714D2FBB20850021F6204F2256B9CF),userDataDir=C:\Users\Akash\AppData\Local\Temp\scoped\u dir6352\u 11834},takesHeapSnapshot=true,pageLoadStrategy=normal,databaseEnabled=false,handlesAlerts=true,hasTouchScreen=false,version=56.0.2924.87,platform=WIN8_1,browserConnectionEnabled=false,nativeEvents=true,acceptSslCerts=true,locationContextEnabled=true,WebStorage=true,browserName=chrome,takesScreenshot=true,javascriptEnabled=true,cssSelectorsEnabled=true}] 会话ID:f74e69d9f66bab833287a8fd6f9d3021 位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)


您的错误来自于执行此JavaScript代码jse.executeScript(“参数[0].style.border='3px点蓝'”,尝试在浏览器(即Chrome)中加载网站,打开开发工具(F12),导航到控制台,输入相同的命令,您将得到相同的错误:

根据,

参数将通过“arguments”变量提供给JavaScript


在代码中,使用
参数[0]
而不是
参数[0]
一个简单的解决方案是将jse.executeScript(参数[0].style.border='3px点蓝')更改为jse.executeScript(参数[0].style.border='3px点蓝'),

但是我正在传递参数,完整的命令如下所示基于您的注释,看起来您想要执行以下JavaScript,
document.getElementById('nav-link-yourAccount')).style.border='3px点蓝色'
。顺便说一句,如果没有具有给定ID的元素,这将导致另一个异常,因此,我将为该元素添加一个检查条件另一个要尝试的选项是更改为
参数[0]
注意:s在变量末尾,您的code@AkashChavan:按照oldbam的最新评论进行;这可能是导致您的问题的原因。
public class InitialPage {

    WebDriver driver;

    public InitialPage(WebDriver driver)
    {
        this.driver = driver;
    }

    WebElement element ;

    public WebElement yourOrders(WebDriver driver)
    {
        element = driver.findElement(By.id("nav-link-yourAccount"));
        return(element);

    }
    public WebElement signInBt(WebDriver driver)
    {
        element = driver.findElement(By.xpath(".//*[@id='nav-flyout-ya-signin']/a/span"));
        return(element);

    }

}