使用JavascriptExecutor输入文本

时间:2019-05-10 06:41:12

标签: selenium-webdriver

我使用JavascriptExecutor而不是sendkeys在用户名文本框中键入文本。它键入了文本,但在控制台中显示了以下异常。

我已经在带有最新独立服务器的Chrome版本74上进行过尝试。

 System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
            WebDriver driver=new ChromeDriver();
            driver.get("https://www.apsrtconline.in/oprs-web/login/show.do");
            driver.manage().window().maximize();
            driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
            WebElement ele=driver.findElement(By.name("userName"));
            JavascriptExecutor jse=(JavascriptExecutor) driver;
            jse.executeAsyncScript("arguments[0].value='Vinutha'", ele);
            driver.findElement(By.id("submitBtn")).click();

我希望测试能够通过。但是脚本超时异常。

  

线程“ main” org.openqa.selenium.ScriptTimeoutException中的异常:   脚本超时:该行在30秒内未收到结果   jse.executeAsyncScript(“ arguments [0] .value ='Vinutha'”,ele);

1 个答案:

答案 0 :(得分:1)

请改用jse.executeScript或jse.executeAsyncScript。我相信在有多个线程的情况下使用executeAsyncScript。 (根据我对阅读Java文档的理解) ..... 在当前选定的框架或窗口的上下文中执行异步JavaScript。与执行同步JavaScript不同,使用此方法执行的脚本必须通过调用提供的回调来显式表示已完成脚本。此回调始终作为lastargument注入到执行的函数中。