有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在不使用剪贴板或操作CTRL+C、CTRL+V的情况下将字符串中的“\t”或“tab”发送到selenium中的文本框中

我有一根这样的绳子

String inputString="This\tis\ta\tString";
Webelement inputbox=inputBoxXpath;
inputbox.sendKeys(inputString);

上面代码的问题是,它发送“This”,然后\t被视为一个按键选项卡,然后将焦点移动到下一个元素

为了避免我使用剪贴板的方式,只要应用程序处于焦点状态,它就可以完美地工作

//Partial solution
StringSelection selection = new StringSelection(inputString);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(selection, selection);
inputbox.click()
send_keys("CTRL+V") // Paste the string in clipboard.

但是,当程序正在运行,我将其他内容复制到剪贴板时,输入字符串将被剪贴板的内容替换

如果我想在服务器VM上运行代码,这也会导致问题

我还尝试了Actions发送密钥,但是输出仍然有问题

我正在寻找的是一种使用本机sendKeys(“string”)的方法,其中string包含\t和\n,而不使用CTRL+C和CTRL+V或getCLipboard和setClipboard


共 (2) 个答案

  1. # 1 楼答案

    你可以用javascript来实现。这允许您将值直接设置到对象中

    在Java中,可以这样执行:

        @Test
        public void OptionClickTest() throws InterruptedException {
            System.setProperty("webdriver.chrome.driver", "src/test/resources/chromedriver.exe");
            var driver = new ChromeDriver();
            driver.manage().window().maximize();
            driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
            driver.get("https://www.google.com");
    
            var object = driver.findElement(By.xpath("//input[@name='q']"));
            ((JavascriptExecutor) driver).executeScript("arguments[0].value='this\tis\tmy\ttext'", object);
    
    }
    

    它并不适用于所有类型的输入框,但它在谷歌上对我有效,所以值得一试:

    tabs in a string in google