javascript - 组织.openqa.selenium.JavascriptException : SyntaxError: '' string literal contains an unescaped line break while using executeScript through Selenium

标签 javascript java selenium selenium-webdriver webdriver

org.openqa.selenium.JavascriptException: SyntaxError: '' string literal 在通过 Selenium 使用 executeScript 时包含未转义的换行符

executeScript() 以单行 String 为例:

String myText = "80120804076";

但是当我尝试发送多行 String 时,引发了 JavascriptException

  • 代码试验:

    import org.openqa.selenium.By;
    import org.openqa.selenium.JavascriptExecutor;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.support.ui.ExpectedConditions;
    import org.openqa.selenium.support.ui.WebDriverWait;
    
    public class send_large_text {
    
        static WebDriver driver;
        public static void main(String[] args) {
            System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
            driver = new FirefoxDriver();
            driver.get("https://translate.shell.com/");
            //String myText = "80120804076";
            String myText = "No, there is no way to hide the console window of the chromedriver.exe \n"
                + "in the .NET bindings without modifying the bindings source code. This is seen \n"
                + "as a feature of the bindings, as it makes it very easy to see when your code \n"
                + "hasn\'t correctly cleaned up the resources of the ChromeDriver, since the console window \n"
                + "remains open. In the case of some other languages, if your code does not properly clean up \n"
                + "the instance of ChromeDriver by calling the quit() method on the WebDriver object, \n"
                + "you can end up with a zombie chromedriver.exe process running on your machine.";
            (   (JavascriptExecutor) driver).executeScript("arguments[0].value=\'" + myText + "\';", new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("textarea.form-control#translateText"))));
        }
    }
    
  • 观察到的错误:

    1544184402064   mozrunner::runner   INFO    Running command: "C:\\Program Files\\Mozilla Firefox\\firefox.exe" "-marionette" "-foreground" "-no-remote" "-profile" "C:\\Users\\ATECHM~1\\AppData\\Local\\Temp\\rust_mozprofile.b4OAHY7RViE6"
    1544184406841   Marionette  INFO    Listening on port 11919
    1544184406988   Marionette  WARN    TLS certificate errors will be ignored for this session
    Dec 07, 2018 5:36:47 PM org.openqa.selenium.remote.ProtocolHandshake createSession
    INFO: Detected dialect: W3C
    Exception in thread "main" org.openqa.selenium.JavascriptException: SyntaxError: '' string literal contains an unescaped line break
    Build info: version: '3.14.0', revision: 'aacccce0', time: '2018-08-02T20:13:22.693Z'
    System info: host: 'ATECHM-03', ip: '192.168.1.6', os.name: 'Windows 8', os.arch: 'amd64', os.version: '6.2', java.version: '1.8.0_172'
    Driver info: org.openqa.selenium.firefox.FirefoxDriver
    Capabilities {acceptInsecureCerts: true, browserName: firefox, browserVersion: 63.0.3, javascriptEnabled: true, moz:accessibilityChecks: false, moz:geckodriverVersion: 0.23.0, moz:headless: false, moz:processID: 5620, moz:profile: C:\Users\AtechM_03\AppData\..., moz:useNonSpecCompliantPointerOrigin: false, moz:webdriverClick: true, pageLoadStrategy: normal, platform: WINDOWS, platformName: WINDOWS, platformVersion: 6.2, rotatable: false, setWindowRect: true, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify}
    Session ID: 31ac155f-8f03-4adf-bc7b-a778f1235351
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
        at java.lang.reflect.Constructor.newInstance(Unknown Source)
        at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
        at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
        at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
        at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
        at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
        at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:548)
        at org.openqa.selenium.remote.RemoteWebDriver.executeScript(RemoteWebDriver.java:485)
        at demo.send_large_text.main(send_large_text.java:25)
    

我经历过相关的讨论:

引用:SyntaxError: unterminated string literal

仍然不知道我哪里出错了。谁能帮帮我?

最佳答案

这是对我有用的:

1) 在每个 \n 之前添加一个额外的斜杠,使其成为 \\n

2) 在撇号 hasn\'t 之前添加额外的斜线使其 hasn\\'

"No, there is no way to hide the console window of the chromedriver.exe \\n"
                + "in the .NET bindings without modifying the bindings source code. This is seen \\n"
                + "as a feature of the bindings, as it makes it very easy to see when your code \\n"
                + "hasn\\'t correctly cleaned up the resources of the ChromeDriver, since the console window \\n"
                + "remains open. In the case of some other languages, if your code does not properly clean up \\n"
                + "the instance of ChromeDriver by calling the quit() method on the WebDriver object, \\n"
                + "you can end up with a zombie chromedriver.exe process running on your machine.";

关于javascript - 组织.openqa.selenium.JavascriptException : SyntaxError: '' string literal contains an unescaped line break while using executeScript through Selenium,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53669371/

相关文章:

javascript - CKeditor insertHtml/insertElement IE8问题

Java Spring 一个类的多个节点

java - 无法连接到在 AWS EC2 上运行的 Selenium Grid

selenium - 无法单击打开文件附件对话框的按钮

javascript - 求和对索引之和的算法

javascript - 如何按文件/模块分离 JSDoc

javascript - "onrendered"在javascript中是如何使用的?

java - Arrays.asList 从字符串创建数组,然后省略数组中的第一个单词

java - 如何更新 map 中的值?

selenium - 如何在 google colab 中插入 geckodriver 的路径(环境变量)?