当前位置: 首页 > 知识库问答 >
问题:

从Selenium运行javascript时获取“参数未定义”错误

齐铭
2023-03-14

TestCase类是我初始化驱动程序并调用url(urlhttp://www.amazon.in/")

public class TestCase { 
    InitializeDriver id = new InitializeDriver();
    WebDriver driver = null;

    @BeforeTest
    public void setup()
    {
        id.invokeApplicationUrl();
        driver = id.getDriver();

    }

}

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 (9aea000394714d2fbb20850021f6204f2256b9cf),平台 =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 Capabilities [{applicationCacheEnabled=false, rotatable=false, mobileEmulationEnabled=false, networkConnectionEnabled=false, chrome={chromedriverVersion=2.24.417431 (9aea000394714d2fbb20850021f6204f2256b9cf), userDataDir=C:\Users\Akash\AppData\Local\Temp\scoped_dir6352_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, webStorageEnabled=true, browserName=chrome, takesScreenshot=true, javascriptEnabled=true, cssSelectorsEnabled=true}] Session ID: f74e69d9f66bab833287a8fd6f9d3021 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

共有2个答案

柳灿
2023-03-14

你的错误来自执行这个JavaScript代码jse.executeScript(“argument[0].style.border='3px dotted blue'”,尝试在浏览器(即Chrome)中加载网站,打开开发人员工具(F12),导航到控制台,输入相同的命令,你会得到同样的错误:

根据硒留档,

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

在您的代码中,您使用参数[0]而不是参数[0]

齐永昌
2023-03-14

一个简单的解决方案是将jse.executeScript(“参数[0].style.border='3px点蓝色')更改为jse.executeScript(“参数[1].style.边框='3px点蓝色'),

 类似资料:
  • 问题内容: 在开发机器上,我的网站运行正常,但是在托管服务器上我遇到了javascript’Sys ‘未定义 错误,并且我的AJAX无法正常工作。 我在上面做了一个示例页面和脚本管理器,请仔细研究。 http://nexapps.com/default2.aspx 按钮和文本框位于AJAX updatepanel中,但是当单击按钮页面时,将回发完整。 注意:托管服务器-IIS7,但我的其他网站在同

  • error-driver=webdriver.firefox()文件“/users/grey/.pyenv/versions/3.7.3/lib/python3.7/site-packages/selenium/webdriver/firefox/webdriver/firefox/webdriver.py”,第164行,在init self.service.start()文件“/users/gr

  • 问题内容: 我在中定义了一个macrodef ,并用来完成这项工作。在这种情况下,我正在验证。 问题是没有检索传递的属性的值。有人知道您如何从javascript中获取属性的值吗? 问题答案: 原来我使用了错误的标签类型。为了使用脚本定义蚂蚁任务,我应该使用not 。使用预定义的对象可以访问任务中的属性和嵌套元素。 这适用于从Ant中的javascript访问属性:

  • 我正在尝试探索在测试中添加咆哮通知的功能。这允许在测试执行时将消息添加到屏幕上。 我正在尝试通过以下步骤指定的这种方法:http://elementalselenium.com/tips/53-growl 机器:windows 10 Selenium版本:2.53浏览器:Firefox 49 以下是我正在使用的脚本: 执行此操作时,我收到以下错误: 等待弹出窗口出现..单击弹出窗口..现在等待通知

  • 我是新手,所以请帮忙。我在尝试使用angular with angular ng controller标记运行简单代码时出错,我在html中显示一个变量,该变量在javascript文件中定义为: 并在html中显示如下:html页面 chrome控制台上的错误如下: 未捕获的引用错误:系统未定义(匿名函数)@angular2.js:3098 指向angular2js中的某些函数: 我不明白这个问