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
# 1 楼答案
你可以用javascript来实现。这允许您将值直接设置到对象中
在Java中,可以这样执行:
它并不适用于所有类型的输入框,但它在谷歌上对我有效,所以值得一试:
# 2 楼答案
将输入字符串中的“\t”替换为“\u0009”(Java Encoding for Unicode Character 'CHARACTER TABULATION')